[英]How to call angular controller scope function from directive with parameters?
[英]Call a controller scope function from directive in 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);
}
}])
下拉列表可以正常工作,而select選項也可以正常工作,但是涉及到范圍。$ apply(attr.eventlstn); 它不起作用
添加eventlstn:'&',然后在需要的范圍內調用。$ apply(scope.eventLstn(args))
您可以從指令鏈接函數調用控制器函數,因為您的指令是“元素類型”(E),您必須添加已作為eventlstn="selectTab(summary)"
到指令中的屬性,您eventlstn="selectTab(summary)"
的更改是下面
return {
scope: {
onSelect: '&',
eventlstn: '&',
selectOptions: '=',
isoFilterParams:'=filterParams',
isoEventListener:'=eventListener',
selectedValue:'=',
defaultOption:'=',
disable:'&',
apiParams:'='
},
所以我在范圍變量的第二個參數中添加了要從selectTab函數發送到控制器的參數是summary,因此如何將值傳遞給summary以便調用控制器函數如下
例如,僅以為您需要將option的值傳遞到控制器功能將捕獲為數據的select選項卡的摘要,您需要使用與在指令屬性中使用的鍵相同的鍵作為對象鍵。
scope.selectOption = function(option) {
scope.eventlstn({
summary: option
})
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.