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 
    }) 
}; 
相關問題