1

私はこのhtmlを持っています:

<div ng-controller="MyCtrl">
  <div ng-view></div>
</div>

<script type="text/ng-template" id="/a">
  // SomeHtml with Angular templates
</script>

<script type="text/ng-template" id="/b">
  // SomeHtml with Angular templates
</script>

と:

angular.module('ngView', [], function($routeProvider, $locationProvider) {
  $routeProvider.when('/a', {
    templateUrl: '/a',
    controller: MyCtrl
  });

  $routeProvider.when('/b', {
    templateUrl: '/b',
    controller: MyCtrl
  });
});

コントローラ "MyCtrl" には、html が最初に読み込まれたときに呼び出されるブートストラップ コードがいくつかあります。このブートストラップ コードは、"/a" と "/b" テンプレートの両方で使用される状態を設定します。テンプレート「/a」と「/b」は、ブートストラップ中に取得したデータをさまざまな方法で表示します。

コントローラーがなくても、テンプレートから MyCtrl スコープにアクセスできるようにしたいです。

4

3 に答える 3

2

ラッピング コントローラーを削除し、ルートごとに独自のコントローラーを持たせます。これらのコントローラーに共有データが必要な場合は、これらのデータを保持する専用オブジェクトをコントローラーの依存関係リストに追加します。例を次に示します: https://stackoverflow.com/a/9407953/410102

于 2012-12-28T16:39:51.960 に答える
1

Angular Web サイトの横には、それを行う必要のないコントローラーを指定する必要があると記載されています。ng-view属性を持つタグが を持つ別のタグにラップされているng-controller場合、レンダリングされたテンプレートは通常どおり親スコープにアクセスできます。

于 2013-01-08T16:40:20.817 に答える
0

テンプレートコントローラーには、継承する親コントローラー(いわゆるラッピングコントローラー)があります。そのため、ラッピングコントローラから関数を実行してプロパティにアクセスできます。

function TemplateAController($scope) {
 ...
}

function WrappingController($scope) {
   $scope.execute = function() {
      ...
   }
    ...
   }

テンプレート内:

<a ng-click="execute()">Execute</a>
于 2012-12-28T16:09:49.550 に答える