2016-06-29 21 views
2

にngModel構文が必要になります。は、私は以下を参照してください。AngularJS

// my-directive.js  
return { 
    require: 'ngModel', 
    scope: { 
    ngModel: '=', 
    }, 
    controller: controller, 
    link: myLink 
}; 

// my-link.js 
return function(scope, $element, attrs, modelController) { 
    scope.onMyClick = function(event) { 
    modelController.$setViewValue(getItem(event)); 
    } 
}; 

// foo.html 
<my-directive ng-model="myModel"></my-directive> 

my-directiveインスタンスが宣言され、外側のスコープでmyModelに双方向データバインディングを提供するために使用さng-modelディレクティブですか?

これは、角度1.4のディレクティブと外側モデル間の双方向データバインディングを提供する慣習的な方法ですか?

ディレクティブ定義のrequire: 'ngModel'は、ng-modelディレクティブインスタンスのコントローラインスタンスをリンク関数my-linkに挿入する以外の何かを行いますか?

最後に、コントローラーmy-directiveのスコープでコントローラng-modelを使用できるようにしますか?

答えて

1

ここでは、ng-modelは指示文、ngModel: '='は属性として2つの異なるものがあります。それらを分割することができます:

<my-directive ng-model="myModel" whatever="myModel"></my-directive> 

return { 
    require: 'ngModel', 
    scope: { 
    myModel: '=', 
    }, 
    controller: controller, 
    link: myLink 
}; 

私のディレクティブのインスタンスが宣言 で外側のスコープで にmymodelというの双方向データバインディングを提供するために使用NG-モデルディレクティブですか?

いいえ、双方向バインディングは、ディレクティブ内の定義によって提供されます。 (ここではwhatever

これは ディレクティブと角1.4で外部モデル間の結合双方向のデータを提供するために、慣用的な方法は何ですか?

1つのスコープを使用した:{ whatever : '='}は通常の方法です。

必要ない:そのくらい

ないリンク機能の私のリンクにNG-モデルディレクティブ インスタンスのコントローラのインスタンスを注入以外 を行う「ngModelを」ディレクティブの定義で、もしあなたがngModelなしでディレクティブを使用すると、エラーがスローされます。

最後に、my-directiveのコントローラー用の スコープでng-modelのコントローラーを使用できるようにしますか?

いいえ、あなたのスコープに何も追加しません。注入されたコントローラにアクセスできます。

関連する問題