这是我的路线......
angular.module('ng').
config(function ($routeProvider) {
$routeProvider.
when('/User_View', { templateUrl: '/rest/tbot/run/User_View' });
});
在模板中它有以下内容......
<div ng-controller="TMUser">
TMUser在脚本块的模板中定义。但是控制器中的代码似乎没有运行。这是为什么?
答案 0 :(得分:2)
不应在模板文件中定义控制器。我不认为Angular可以知道它并以这种方式加载它。将其定义在将在路由更改发生之前执行的代码文件中。
您还可以在routeProvider
配置对象中指定控制器,例如:
when('/User_View', { templateUrl: '/rest/tbot/run/User_View', controller:'TMUser' });
This fiddle演示了一个非常简单的示例(source)
答案 1 :(得分:1)
以上答案是正确的。 但我使用ng-include和ng-hide实现了相同的功能,确切地说是ng-view和routing。
我创建了一个没有控制器的部分页面,并将其包含在父页面中,并在单击按钮后隐藏了部分页面我只是显示页面。
路由有好处。您可以通过参数并相应地更改视图和浏览器历史记录。
这是我的页面包含在子控制器内的代码下面。
<span ng-include="'/PartialPages/ChangeDetails.htm'"></span>
指的是我的主页
<div id="ChangeInfo" ng-show="datashow">
<table width="100%">
<thead>
<tr>
<th>File Name</th>
<th>File Create Date</th>
<th>File Modified Date</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="file in FilesDetails" ng-class="{TableStrip : ($index % 2)}">
<td>{{file.FileName}}</td>
<td>{{file.CreateDate}}</td>
<td>{{file.ModifiedDate}}</td>
</tr>
</tbody>
</table>
<hr />
</div>
和控制器代码
var deploymentVerifierModule = angular.module("DeploymentVerifierApp", ['DeploymentServiceModule']);
deploymentVerifierModule.controller("DeploymentVerifierCntrl", function ($scope, DeploymentService) {
$scope.datashow = false;
$scope.PleaseWait = false;
$scope.VerifyChange = function () {
//Get the Change ticket number from textbox
$scope.PleaseWait = true;
var changeticketnum = document.getElementById("ChangeNumber").value;
DeploymentService.GetChangeDetails(changeticketnum).then(function (data) {
$scope.FilesDetails = angular.fromJson(data);
$scope.PleaseWait = false;
$scope.datashow = true;
}, function (error) { });
};
});
我仍然没有得到你的一些观点为什么你希望控制器在模板中。和templateurl属性也包含页面的扩展名。