【问题标题】:ng view is not working but ng include work in angularjsng 视图不起作用,但 ng 包括在 angularjs 中的工作
【发布时间】:2015-07-10 10:38:31
【问题描述】:

谁能帮帮我,我不知道我做错了什么。我正在关注平均网络开发教程。 ng-include 适用于模板,但 ng-view 不适用。我有 5 个文件。首先是Users.client.module.js:

angular.module('users', []);

其次是 users.client.controller.js

    angular.module('users',['ngRoute']).controller('UsersController', ['$scope', 
function ($scope){
    $scope.name = 'UsersCont';
    console.log("from UsersCont");
}]);

第三个是 users.client.routes.js

angular.module('users').config(['$routeProvider', function ($routeProvider) {
    $routeProvider
    .when('/', {
        templateUrl: 'users/views/register-user.client.view.html'

    })
    .otherwise({
        templateUrl: '/somewhere else'
    });
}]);

第四个是register-client-view.html

<section ng-controller="UsersController">
    <h1>{{ name }}</h1>
</section>

最后是 index.html

<section ng-include=" 'users/views/register-user.client.view.html' "></section>

<section ng-view> </section>

<script type="text/javascript" src="/users/users.client.module.js"></script>
    <script type="text/javascript" src="/users/controllers/users.client.controller.js"></script>

请帮忙

【问题讨论】:

  • 我在 index.html 中的任何地方都看不到 ng-app 它是引导 ng 应用程序所必需的。这看起来也很奇怪ng-include=" 'users/views/register-user.client.view.html' " - 为什么你里面有额外的引号?
  • 我有文件用于手动引导 application.js var mainApplicationModuleName = 'myApp'; var mainApplicationModule = angular.module(mainApplicationModuleName, ['ngResource' ,'ngRoute', 'users', 'articles']); mainApplicationModule.config(['$locationProvider', function ($locationProvider){ $locationProvider.hashPrefix('!'); }]); angular.element(document).ready(function(){ angular.bootstrap(document, [mainApplicationModuleName]); }); ng-include 工作正常,我尝试不使用单引号但不工作。我认为问题出在路线的某个地方,但我找不到它。也尝试使用 ng-app
  • 我没有看到您在索引中加载 users.client.routes.js。你有这个吗?
  • omg..谢谢你 1000 次 Devin H. 我没有包含 users.client.rotues.js...

标签: angularjs routes mean-stack


【解决方案1】:

你必须使用 ngRoute 作为它的依赖项

试试下面的代码

var app = angular.module('users', ['ngRoute']);

并且不要忘记在 angular main js 文件之后包含 angular route js 文件。

<script src="Scripts/Vendors/angular-route.min.js"></script>

【讨论】:

  • 感谢您的快速响应 Hasib Hasan Arnab,在我在 module.js 文件中使用 ['ngRoute'] 提出问题之前,我已经尝试过,但也没有成功。我已经在 angular.js 之后包含了 angular-route.js,现在我尝试使用缩小版但仍然无法正常工作...真的不知道该怎么办...再次感谢您帮助我
【解决方案2】:

似乎问题是由模板名称中的连字符引起的。 看到这个答案AngularJS templates can't use JSON that contains hyphen

尝试重命名模板名称(将连字符替换为下划线)或使用反斜杠对其进行转义。

我猜想被认为是减号和角(或javascript)的连字符会被它混淆。这也是为什么 ng-include=" 'users/views/register-user.client.view.html' " 有效而 ng-include="users/views/register-user.client.view.html" 无效的原因

【讨论】:

  • 感谢您的帮助,这就是为什么是单引号。但我认为这不是问题。我在文章中也有路由文章/视图/list-articles.client.view.html 并且当路由为“/articles”时工作正常......我认为问题在于路由我放置的任何模板 ng-view 不显示。我将重新开始并尝试找出错误...现在我不知道...
猜你喜欢
  • 2019-08-06
  • 1970-01-01
  • 1970-01-01
  • 2016-08-26
  • 2017-01-18
  • 1970-01-01
  • 2015-06-29
  • 1970-01-01
相关资源
最近更新 更多