-2

这是我的路线...

angular.module('ng').
    config(function ($routeProvider) {
        $routeProvider.
            when('/User_View', { templateUrl: '/rest/tbot/run/User_View' });
    });

在模板中,它具有以下...

<div ng-controller="TMUser">

TMUser 在脚本块中的模板中定义。但是控制器中的代码似乎没有运行。为什么是这样?

4

2 回答 2

2

控制器不应在模板文件中定义。我不认为 Angular 可以知道它并以这种方式加载它。在路由更改发生之前将执行的代码文件中定义它。

您还可以在routeProvider配置对象中指定控制器,例如:

when('/User_View', { templateUrl: '/rest/tbot/run/User_View', controller:'TMUser' });

这个小提琴演示了一个非常简单的例子(来源

于 2013-07-07T16:58:42.007 回答
1

上面的答案是正确的。但是我使用 ng-include 和 ng-hide 实现了相同的目标,而 ng-view 和路由的作用究竟是什么。

我创建了一个没有控制器的部分页面,并将其包含在父页面中,并在单击按钮后隐藏了该部分页面,我只是显示该页面。

路由有好处。您可以传递参数并根据浏览器历史记录相应地更改视图。

这是我的页面在子控制器内的代码下方。

<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 属性还包含页面的扩展名。

于 2013-07-07T18:27:26.467 回答