0

我在控制器中有一个作用域函数,我需要从指令中触发它,指令是下拉菜单,所以无论何时我要更改值,我需要从指令触发一个函数控制器。从Angular中的指令调用控制器作用域函数

HTML

<dropdown-single-select filter-params=false eventlstn="selectTab('summary')" api-params="serviceApiParams" select-options="filterData.classFilter" selected-value="filterData.selectedClassOptions" ></dropdown-single-select> 

指令

.directive('dropdownSingleSelect',['$document', function($document){ 
    return { 
     scope: { 
      onSelect: '&',   
      selectOptions: '=', 
      isoFilterParams:'=filterParams', 
      isoEventListener:'=eventListener', 
      selectedValue:'=', 
      defaultOption:'=', 
      disable:'&', 
      apiParams:'='  
     }, 
     restrict: 'E', 
     templateUrl: 'commonActions/waggle-single-select.tpl.html', 
     link: function(scope, element, attr) {   

      scope.toggleOptions= function(){ 
       scope.showOptions = !scope.showOptions; 
      } 
      scope.selectOption = function(option){    

       if(scope.apiParams.reload){ 
        scope.apiParams.classViewId=option.classViewId; 
        scope.$apply(attr.eventlstn); 
       }    
     } 
    }; 
}]) 

控制器

.controller('studentSummaryReportCtrl', ['$scope', function ($scope){ 

$scope.selectTab=function(data){ 
console.log(data); 
} 

}]) 

下拉工作正常和ALS o selectoption工作正常,但涉及到作用域。$ apply(attr.eventlstn);它不工作

+0

您可以在法传递与“&”的指令,只是把它从向链路功能类似这样的'scope.selectTab(“摘要”)' –

+0

感谢您的回答,但我打过电话与功能$发射,它像一个魅力:) –

回答

0

添加eventlstn:“&”,然后在需要的时候范围调用$应用(scope.eventLstn(参数))

0

您还可以从该指令链接功能 控制器功能为您的指令是一个“元素类型”(E)你必须添加您已在指令添加为eventlstn="selectTab(summary)"属性,你所要做的变化进行是

return { 
     scope: { 
      onSelect: '&', 
      eventlstn: '&',   
      selectOptions: '=', 
      isoFilterParams:'=filterParams', 
      isoEventListener:'=eventListener', 
      selectedValue:'=', 
      defaultOption:'=', 
      disable:'&', 
      apiParams:'='  
     }, 

所以我添加为范围变量参数的第2个PARAM您要发送给控制器的selectTab函数是汇总所以如何将值传递给汇总,以便它将调用控制器函数是

只是例如认为您需要将选项的值传递给控制器​​函数将捕获的选项卡摘要作为数据您需要在指令属性中使用与对象密钥相同的密钥。

scope.selectOption = function(option) { 
    scope.eventlstn({ 
     summary: option 
    }) 
}; 
相关问题