[英]Angular - Requiring ngModel and using it in controller of custom directive, not link function
[英]Accessing ngModel in Directive's controller function
我有一個包含一些子指令的自定義表單元素指令。 我在父指令中需要ngModel
,以便可以在指令HTML聲明中使用ng-model="object.data"
。
我遇到的問題是從子指令更改該值。 子指令可能需要父控制器功能,但該控制器功能無權訪問ngModelController
,后者僅對postLink
函數可用(在這里我可能錯了)。
Controller
和Link
函數都可以訪問同一作用域(在這種情況下,它並不總是正確的),因此我可以執行以下操作:
.directive('myDirective', [function() {
return {
....
controller: function ($scope, $element, $attrs) {
this.select = function (selected) {
$scope.ngModelCtrl.$setViewValue(selected);
};
},
link: function (scope, elem, attrs, ngModelCtrl) {
scope.ngModelCtrl = ngModelCtrl;
}
};
}])
.directive('myChildDirective', [function () {
return {
require: '^myDirective',
....
link: function (scope, elem, attrs, myDirectiveCtrl) {
elem.bind('click', function () {
myDirectiveCtrl.select(scope.value);
});
}
}
}]);
通過將ngModelController
分配給作用域,我可以使用控制器功能方法來訪問它,而該方法又可以由子指令調用,但這似乎很hacky,必須有更好的解決方案,因此對您的幫助將不勝感激。
也許我不太了解您要完成的工作,但是為什么不只對元素使用ng-click並在父控制器中完全處理呢?
並且,如果您需要修改父作用域中的某些內容,則將該對象注入子作用域中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.