如何从其他指令访问指令' ngModelController
?
方案
我正在创建一个提前输入的小部件,它由typeAhead
指令和autoCompletePopUp
指令组成。
AutoCompletePopUp
指令将使用typeAhead
与typeAhead's controller
进行互动。
但我不知道如何在选择项目时从typeAhead's $setViewValue
致电autoCompletePopUp
。
答案 0 :(得分:0)
为什么不在控制器中为typeAhead
添加一个函数来调用$ setViewValue。在typeAhead's
控制器的上下文中,您应该可以访问范围。如果需要,您可以在范围上放置typeAhead
的ngModelController。像这样:
angular.module("myModule").directive("typeAhead", function() {
return {
require: "ngModel",
controller: function($scope) {
this.setValue = function(value) {
$scope.ngModelController.$setViewValue(value);
};
},
link: function(scope, element, attributes, ngModelController) {
scope.ngModelController = ngModelController;
},
};
});
angular.module("myModule").directive("typeAhead", function() {
return {
require: "typeAhead",
link: function(scope, element, attributes, typeAheadController) {
scope.someAction = function(value) {
typeAheadController.setValue(value);
};
},
};
});
(防止缩小并根据需要将控制器移动到单独的对象/文件中;为方便起见,这里内联完成)