-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' });

このフィドルは非常に単純な例を示しています ( source )

于 2013-07-07T16:58:42.007 に答える
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 プロパティには、ページの拡張子も含まれています。

于 2013-07-07T18:27:26.467 に答える