Directive To Directive通信并调用传递的函数

时间:2015-05-19 16:41:02

标签: angularjs

我有两个指令和一个具有功能测试的控制器。我的日期指令有一个按钮,点击是在filter指令中调用一个函数,需要调用通过输入传递的函数,我尝试$scope.$apply($attrs.entering);,但得到$apply already in progress

HTML中的

我有:

<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()
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

你不能在angular控制器中使用$ scope。$ apply,因为它们已经包含在$ scope中。$ apply隐式地应用。根据场景,您可以使用$ scope。$ watch或$ broadcast / $ emit / $。

其他信息:http://jimhoskins.com/2012/12/17/angularjs-and-apply.html