AngularJs:如何更改指令中的提交函数
我有一个指令(确认对话框),我在另一个作用域和适当的控制器中使用过多次。 每次设置AngularJs:如何更改指令中的提交函数,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有一个指令(确认对话框),我在另一个作用域和适当的控制器中使用过多次。 每次设置$scope.showConfirm时,如何将提交函数1approveConfirm()更改为另一个提交函数,例如2approveConfirm(),或3approveConfirm()(显示此对话框) app.directive('confirm',function(){ 返回{ 限制:'E', 范围:假, 控制器:函数($scope){} }, 模板:'\ \ {{text}}\ \ \ 取消\ 嗯\ \ \
$scope.showConfirm
时,如何将提交函数1approveConfirm()
更改为另一个提交函数,例如2approveConfirm()
,或3approveConfirm()
(显示此对话框)
app.directive('confirm',function(){
返回{
限制:'E',
范围:假,
控制器:函数($scope){}
},
模板:'\
\
{{text}}\
\
\
取消\
嗯\
\
\
'
}
});代码>使用下面这样的Approve函数,并将其作为所需的函数
$scope.1approveConfirm = function (){ BLABLA };
$scope.2approveConfirm = function (){ BLABLA };
$scope.approveFunction = $scope.1approveConfirm;
带有函数范围变量
您可以使用'&
app.directive('confirm', function(){
return {
restrict: 'E',
scope: {
confirmFunc: '&'
},
controller: function($scope) {}
},
template: '<div id="popUp" ng-show="showConfirm"> \
<div id="popUpDialog"> \
<div class="title">{{text}}</div>\
<div style="height:30px"></div>\
<div class="clearfix buttons-container"> \
<div class="btn btn_pass pass_canc" ng-click="close()"><span>Cancel</span></div> \
<div class="btn btn_pass" ng-click="confirmFunc()"><span>Ok</span></div> \
</div> \
</div> \
</div>'
}
});
无范围变量
切换showConfirm
布尔值的函数还必须更改在ng click上调用的函数
$scope.submit = function(data){
$scope.showConfirm = true;
if( /* get something from data */ ){
$scope.approveConfirm = function(){
console.log('approved1');
};
}else{
$scope.approveConfirm = function(){
console.log('approved2');
};
}
}
(在模板中使用approveConfirm()而不是1 approveConfirm())不能将数字用作对象属性的前导字符,也不能使用点表示法。将抛出错误。Javascript编译器希望将其视为小数点的好主意,谢谢,但在每个控制器中,此对话框指令可能会显示多次,因此,我每次都需要使用另一个提交函数来显示对话框。函数名前的数字仅用于示例,伙计们,对不起。如果引入隔离作用域,请不要忘记{text}
$scope.submit = function(data){
$scope.showConfirm = true;
if( /* get something from data */ ){
$scope.approveConfirm = function(){
console.log('approved1');
};
}else{
$scope.approveConfirm = function(){
console.log('approved2');
};
}
}