このrequire
命令は、link
関数の4番目の引数として指定したディレクティブのコントローラーを提供します。(あなたが使用することができ^
、親要素上のコントローラを探すために、?
それはオプションになります。)だから、require: 'ngModel'
あなたのためのコントローラ与えngModel
ディレクティブですngModelController
。
ディレクティブコントローラは、他のディレクティブが使用できるAPIを提供するように作成できます。をngModelController
使用するngModel
と、値の取得や設定など、に組み込まれている特別な機能にアクセスできます。次の例について考えてみます。
<input color-picker ng-model="project.color">
app.directive('colorPicker', function() {
return {
require: 'ngModel',
link: function(scope, element, attrs, ngModel) {
element.colorPicker({
// initialize the color to the color on the scope
pickerDefault: scope.color,
// update the ngModel whenever we pick a new color
onColorChange: function(id, newValue) {
scope.$apply(function() {
ngModel.$setViewValue(newValue);
});
}
});
// update the color picker whenever the value on the scope changes
ngModel.$render = function() {
element.val(ngModel.$modelValue);
element.change();
};
}
}
});
このディレクティブは、ngModel
コントローラーを使用して、カラーピッカーから色の値を取得および設定します。次のJSFiddleの例を参照してください:http ://jsfiddle.net/BinaryMuse/AnMhx/
を使用している場合はrequire: 'ngModel'
、おそらく分離スコープでも使用ngModel: '='
しないでください。これngModelController
により、値を変更するために必要なすべてのアクセスが提供されます。
AngularJSホームページの一番下の例でもこの機能を使用しています(カスタムコントローラを使用する場合を除くngModel
)。
ディレクティブの筐体としては、例えば、ngModel
対ng-model
対data-ng-model
:角支持体は、DOMに複数のフォームを使用している間、あなたは(ディレクティブを作成、または使用して例えば、名前でディレクティブを参照する場合require
)、あなたは常にlowerCamelCaseを使用名前の形式。
ng-model='property'