이 require
명령은 link
함수 의 네 번째 인수로 명명 한 지시문에 대한 컨트롤러를 제공합니다 . (당신이 사용할 수있는 ^
부모 요소의 컨트롤러를 찾기 위해, ?
그것을 선택한다.) 그래서 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
vs ng-model
vs data-ng-model
: 지시문의 대 / 소문자는 Angular가 DOM에서 여러 형식 사용을 지원하지만, 지시문을 이름으로 참조 할 때 (예 : 지시문을 만들거나를 사용할 때 require
) 항상 lowerCamelCase를 사용합니다. 이름의 형태.
ng-model='property'