【发布时间】:2015-02-11 00:55:55
【问题描述】:
使用 ng-view 从我的控制器呈现模板时遇到问题。 index.html 文件最初是提供给客户端的,看起来像。
<!doctype html>
<html lang="en" ng-app="hlmApp">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title></title>
<link rel="stylesheet" href="@Model.Root.Resource/bower_components\\/bootstrap/dist/css/bootstrap.css">
@RenderSection("BootScript")
<!-- app.js will load the angular module -->
<script src="@Model.Root.Resource/bower_components/angular/angular.js"></script>
<script src="@Model.Root.Resource/bower_components/angular-route/angular-route.js"></script>
<script src="@Model.Root.Resource/app/app.js"></script>
<script src="@Model.Root.Resource/app/controllers/controllers.js"></script>
</head>
<body>
<div class="container">
<div class="navbar">
<div class="navbar-inner">
<ul class="nav">
<li><a href="#/Overview">A link here</a></li>
</ul>
</div>
</div>
<div ng-view></div>
@*<div ng-controller="tempController">{{Heading}}</div>*@
</div>
@RenderBody()
</body>
</html>
服务器将我的 app.js 和 controllers.js 文件连同 deps 一起下推。
/// ap.js ///
var hlmApp = angular.module('hlmApp', ['ngRoute', 'MyTempControllers']);
hlmApp.config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/Holdings', {
templateUrl: 'templates/temp.html',
controller: 'controllers/tempController'
});
}]);
控制器很简单,如下
var MyTempControllers = angular.module('MyTempControllers', []);
MyTempControllers.controller('tempController', ['$scope', function () {
console.log("stuff happening");
$scope.Heading = "Hello World";
}]);
那么html模板如下
<div>
<h3>{{Heading}}</h3>
</div>
当我使用 ng-view 时,什么都不会呈现。控制器永远不会在调试器中触发。如果我通过 ng-controller 专门调用控制器,那么一切都会显示出来。有人可以在这里指出我的错误吗?
【问题讨论】:
-
尝试将“controllers/tempController”更改为“tempController”。为什么要使用同一个控制器来查看和导航?
-
刚刚试了一下。不工作。控制器和模板在“app”的父文件夹中都有自己的文件夹
-
你能解释一下你的意思吗我专门通过 ng-controller 调用了控制器然后一切都显示出来了。是您的 HTML
@*<div ng-controller="tempController">{{Heading}}</div>*@中的这个片段吗(不需要) -
你不需要告诉控制器文件的路径。您只需要将控制器名称告诉您的 routeProvider
-
@MichaelColeman 是的,如果我取消注释该行,那么页面上将显示“Hello World”
标签: javascript angularjs