35

ビューで設定している変数がありng-init、コントローラーでアクセスしようとしています。ただし、アクセスしようとすると、undefined.

関連するコード:

私の見解:

<div ng-controller="MyCtrl">
  <div ng-init="pageTitle = 'kittens'">
  </div>
</div>

私のコントローラー:

var MyCtrl;

MyCtrl = function($scope) {
  return console.log($scope.pageTitle);
};

JSFiddle

ここで何が欠けていますか?

4

4 に答える 4

15

JavaScript が関数を定義する方法を利用して、 $watch ( jsfiddle )の代わりに ng-init の関数を使用することもできます。

<div ng-app>
    <div ng-controller="MyCtrl" ng-init="pageTitleEquals('kittens')">
        Page title is {{ pageTitle }}
    </div>
</div>

コントローラ:

var MyCtrl = function($scope) {   
    $scope.pageTitleEquals = function(title) {
        $scope.pageTitle = title;
    }
};

この質問は似ています: How to set scope property with ng-init?

于 2014-09-19T01:12:03.973 に答える
12

コントローラーは、pageTitle 変数が $scope オブジェクトに追加される前に作成されています。

于 2013-09-04T08:05:22.740 に答える
3

コンストラクターのように「1回の初期化」を行っているため、変数を使用した後、ウォッチのバインドを解除することをお勧めします。

var pageTitleWatch = $scope.$watch('pageTitle', function () {
    console.log($scope.pageTitle);
    // Now just unbind it after doing your logic
    pageTitleWatch();
});
于 2015-04-21T18:08:16.323 に答える