5

私はここ数週間 angularJs を学んでおり、現実の世界で物事がどのように機能するかを確認するために、多数の大規模アプリを調べてきました。それらのほとんどで、ビューがロードされたときに気づきました:

ng-init="init()"

つまり、関数 init() が関連するコントローラーで呼び出されます。初期値の設定に使用します。

しかし(大きいが)ngInitのAngularドキュメントを読んでいると、かなり厳しい見た目の説明に行き着きました:

「以下のデモに見られるように、ngRepeat の特別なプロパティをエイリアシングするための ngInit の唯一の適切な使用法。このケース以外では、スコープの値を初期化するために ngInit ではなくコントローラーを使用する必要があります。」

だから私の質問は、ビューがロードされたときにスコープ内の値を初期化するために ngInit を使用するのは悪い習慣ですか? もしそうなら、これはなぜですか?そして正しい方法は何ですか?

4

1 に答える 1

7

ビューがコントローラーとは異なる時間に初期化され、かつダイジェスト サイクルがその関数を処理する必要があるため、これは悪い習慣です。これは、そのサイクルに不要な追加です。私はあなたが次のようなものを持っていると仮定します:

意見:

<div ng-init="init()">
 <span>{{thing}}</span>
</div>

コントローラ:

Module.controller('viewController', function(scope){
    ...
    var init = function(){
     scope.thing = "123";
     ...
    }
    ...
})

より良い方法は、これを行うことです:

意見:

<div>
 <span ng-bind="thing"></span>
</div>

コントローラ:

Module.controller('viewController', function(scope){
 scope.thing = "123";
})
于 2013-12-12T15:11:39.717 に答える