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

感謝即將簽出 –