我有两个指令和一个具有功能测试的控制器。我的日期指令有一个按钮,点击是在filter指令中调用一个函数,需要调用通过输入传递的函数,我尝试$scope.$apply($attrs.entering);
,但得到$apply already in progress
。
我有:
<filter entering="ctrl.test()">
<date></date>
</filter>
app.directive('filter', function() {
return {
restrict: 'E',
controller: function($scope, $element, $attrs) {
this.sayHello = function() {
// call function here $scope.$apply($attrs.entering);
}
}
}
}
app.firective('date', function() {
return {
require: '^filter',
link: function(scope, element, attrs, filterCtrl) {
scope.isClicked = function() {
filterCtrl.say()
}
}
}
}
答案 0 :(得分:0)
你不能在angular控制器中使用$ scope。$ apply,因为它们已经包含在$ scope中。$ apply隐式地应用。根据场景,您可以使用$ scope。$ watch或$ broadcast / $ emit / $。
其他信息:http://jimhoskins.com/2012/12/17/angularjs-and-apply.html