2016-07-30 6 views
0

私はどこかに間違った配線があるのか​​、それとも(独立したスコープを持つ)コントローラのコントローラですべてのプロパティが設定されていると想定するのは危険ですか?ディレクティブのプロパティはコントローラにバインドされていますか?

例:

.directive("wordEditor",function(){ 
    return { 
    scope : { 
     categories : "=", 
    }, 

    controller : function($scope) 
    { 
     $scope.categories; // is it safe? 
     ... 

は、これまでのところ、それがうまく働いたが、私は、ネストされた指令に弾き始めたとき、私は未定義のプロパティを取得します。

私は少なくとも1つのことを整理したいと思います - 実行時にコントローラ内でプロパティがバインドされていることを保証しますか?

グローバルな意味で価値があるかどうかは問いませんが、それは外界の世界に依存しているため、与えられた指令内で何が起こるかを尋ねています。

答えて

2

私は、実行時にコントローラ内でプロパティがバインドされていることを保証していますか(現在の指令の場合)?

保証はありません。この時点で親コントローラで使用可能な場合のみ、バインドされたスコーププロパティを子コントローラで使用できます。ディレクティブがng-repeatでホストされている場合、または親コントローラが$onInitを使用してそのプロパティを初期化している場合は、このことは成り立ちません。

データバインディングの性質上、バインドされたプロパティはまだ利用できないか、または後で変更される可能性があると仮定して、$scope.$watchまたは$onChangesで監視する必要があります。

+0

ありがとうございます。 – greenoldman

関連する問題