0

我在我的指导功能绑定到一个函数在我的控制器如下:angularjs:在指令多重绑定功能

HTML:

<div graph-visualization data="graphdata" type="graphtype" data-method="watchMonth" timespan="timespan" id="graph" ng-if="!loading"> 
</div> 

指令:

app.directive('graphVisualization', function() { 
    return { 
     restrict: 'A', 
     scope: { 
      data: '=', 
      type: '=', 
      timespan: '=', 
      monthFilter: '&method' 
     }, 
     link: function(scope, element, attrs) { 
      scope.updateMonth = function() { 
       var func = scope.monthFilter(); 
       func(scope.month) 
      } 

      scope.$watchGroup(['data', 'timespan', 'type'], function(newval, oldval) { 
       scope.month = 'something' 
       scope.updateMonth() 
      }) 
}) 

控制器:

$scope.watchMonth = function(value) { 
    //handle value passed from directive 
} 

正如你所看到的,我在我的控制器中有一个绑定函数'watchMonth',它是从指令中调用的。 现在,我想在我的控制器中绑定到其他某个函数的指令中添加另一个函数。我该如何解决它?似乎无法摆脱它的困扰。

我想要的是我正在处理我的指令中的一个点击并获得基于该点击的值。现在,我想将这个值传递给控制器​​,该控制器将修改控制器中的'graphdata'(我已经提供了一个watchgroup)。

回答

1

在HTML添加方法如下所示: 月滤波器=“watchMonth()”第二功能=“功能()”

一定要在函数名的末尾添加括号

<div graph-visualization data="graphdata" type="graphtype" month-filter="watchMonth()" second-function="secondFunction()" timespan="timespan" id="graph" ng-if="!loading"> 

app.directive('graphVisualization', function() { 
return { 
    restrict: 'A', 
    scope: { 
     data: '=', 
     type: '=', 
     timespan: '=', 
     monthFilter: '&', 
     secondFunction: '&' 
    }, 
    link: function(scope, element, attrs) { 
     scope.updateMonth = function() { 
      var func = scope.monthFilter(); 
      func(scope.month) 
     } 

     scope.$watchGroup(['data', 'timespan', 'type'], function(newval, oldval) { 
      scope.month = 'something' 
      scope.updateMonth() 
     }) 

})

增加了plunker,也许这会帮助 http://plnkr.co/edit/cISSlQpQF6lFQrDdbTg4?p=preview

+0

对不起,没有工作 –

+0

感谢即将签出 –