4

AngularJS では、スコープをバインドするためのディレクティブまたは routeProvider なしで、テンプレート内からメソッドを呼び出すことができますか?

私の特定の問題は、メイン コントローラー (AppCtrl) がインデックス ページの本文にあることです。インデックスでは、ngView を使用して、ルーティングに従ってテンプレートを取り込みます。デフォルトのテンプレートを除いて、各 routeProvider には独自のコントローラーがあります。スコープの継承により、テンプレートから AppCtrl で定義されたメソッドを使用できると想定しましたが、単純なアラートまたは console.log を実行しようとしても何も登録されません。データが正しく表示されるため、$scope がテンプレートに到達していることはわかっています。

これは $scope の問題のようですが、対処方法がわかりません。それらを明示的にバインドするディレクティブを作成する必要がありますか?

index.html

<body ng-controller="AppCtrl">
   <div ng-view></div>
</body>

app.js

var myApp = angular.module('myApp', [])
.config(function($routeProvider) {
  .when('/', {
    templateUrl: 'partials/list.html'
  }),
  .when('/info/:id, {
    templateUrl: 'partials/info.html'
    controller: 'InfoCtrl'
  });
});

controllers.js

var controllers = {};
controllers.AppCtrl = function($scope, $location, Factory) {
  ...
  $scope.doSomething = function() {
    alert('hello');
  };
};
myApp.controller(controllers);

list.html

<a href="#" ng-click="doSomething()">Do Something</a> // no response
4

1 に答える 1