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');
      };
   }
}