我有一个名为old()的指令中定义的函数,当前按钮在单击时执行此函数。我想在加载指令时将old()函数更改为new()函数。新函数将通过参数(this.form)接收(“form”是我的表单的名称)。 我已经试过这一点,但它更改ng-click函数属性。在Angular.js
attrs.$set('ngClick', 'new(this.form)');
,但不执行新的()函数。我该怎么做?。 我需要在一个指令中做到这一点,也许它可以在控制器中实现,但我需要在指令中做到这一点,我把这个例子怀疑应用在我的真实项目中。非常感谢你。
app.directive('validation', function ($timeout) {
return {
restrict: 'AE',
require: 'ngModel',
link: function (scope, element, attrs, ngModel) {
if (!ngModel){
return;
}
scope.old= function(){
alert("old")
}
//attrs.$set('ngClick', 'new(this.form)');
scope.new= function(form){
alert("new");
console.log(form)
}
}
};
});
谢谢!但我怎么能得到this.form,在模板(new(this.form)) – yavg
我这样做,attrs。$ set('ngClick',scope.old = scope.new(this。形成));但为什么当我启动应用程序时运行?当我点击按钮 – yavg
时,我需要这种情况我非常感谢你的努力。但我会解释一点。在模板中,用户应该点击ng-click:ng-click ='old(this.form); form。$ valid && new()'。我不想让你把这条长长的路线。这就是为什么从指令中我想添加这一行,以便最终用户只需要将ng-click ='new()'。该指令将构建ng-click =“old(this.form); form。$ valid && new()” – yavg