Javascript 在对象内调用函数作为指令的参数

Javascript 在对象内调用函数作为指令的参数,javascript,angularjs,angularjs-ng-click,Javascript,Angularjs,Angularjs Ng Click,目前我正在扩展我的应用程序,所以我可以给一个指令(它生成一个表格网格)一个对象,让其他按钮显示(用于添加其他操作) 现在我可以显示按钮,但我需要执行一些代码作为函数,应该应用于点击该按钮 对象本身以混合方式包含字符串和函数,如下所示: <tablegrid table="flavorings" additional-buttons="[{name: 'add', onclick: 'function(){ }', icon: 'fa fa-plus'}]" show-actio

目前我正在扩展我的应用程序,所以我可以给一个指令(它生成一个表格网格)一个对象,让其他按钮显示(用于添加其他操作)

现在我可以显示按钮,但我需要执行一些代码作为函数,应该应用于点击该按钮

对象本身以混合方式包含字符串和函数,如下所示:

<tablegrid
  table="flavorings"
  additional-buttons="[{name: 'add', onclick: 'function(){ }', icon: 'fa fa-plus'}]"
  show-actionbutton="true"
  show-rating="true"
  show-search="true"
  show-rowcheckbox="true"
  show-header="true">
</tablegrid>
<button ng-repeat="aB in additionalButtons" class="btn btn-primary" ng-click="ab.onclick" type="button">
  <i ng-class="aB.icon" ng-show="aB.icon  != ''" aria-hidden="true"></i>&nbsp;
  <span>{{ 'TABLEGRID_'+aB.name | uppercase | translate }}</span>
</button>

我的指令模板如下所示:

<tablegrid
  table="flavorings"
  additional-buttons="[{name: 'add', onclick: 'function(){ }', icon: 'fa fa-plus'}]"
  show-actionbutton="true"
  show-rating="true"
  show-search="true"
  show-rowcheckbox="true"
  show-header="true">
</tablegrid>
<button ng-repeat="aB in additionalButtons" class="btn btn-primary" ng-click="ab.onclick" type="button">
  <i ng-class="aB.icon" ng-show="aB.icon  != ''" aria-hidden="true"></i>&nbsp;
  <span>{{ 'TABLEGRID_'+aB.name | uppercase | translate }}</span>
</button>

{{'TABLEGRID}+aB.name |大写| translate}

如何执行onclick函数?

您可以使用以下命令直接调用视图中作用域对象的函数:

ng-click="yourObject.functionName(parameters)"
即使没有参数,也不要忘记函数调用中的括号

以下是其工作原理的演示:

var-app=angular.module('myApp',[]);
应用程序控制器('MyCtrl',函数($scope){
$scope.additionalButtons=[
{'name':'First',
'onclick':函数(){alert('1')}
}, 
{'name':'Second',
'onclick':函数(){alert('2')}
}
];
});

单击{ab.name}

您可以使用以下命令直接调用视图中作用域对象的函数:

ng-click="yourObject.functionName(parameters)"
即使没有参数,也不要忘记函数调用中的括号

以下是其工作原理的演示:

var-app=angular.module('myApp',[]);
应用程序控制器('MyCtrl',函数($scope){
$scope.additionalButtons=[
{'name':'First',
'onclick':函数(){alert('1')}
}, 
{'name':'Second',
'onclick':函数(){alert('2')}
}
];
});

单击{ab.name}

这很有效,谢谢!但是我需要手动执行按钮本身的功能,对吗?eval(),最好的方法是什么?该函数可能包含AngularJS代码和vanilla js。我不明白你所说的“为按钮本身执行函数”是什么意思,你能详细说明一下吗?我想传递一个包含n个按钮、图标、名称和单击按钮时应执行的函数的additionalButtons对象。原因是,我不知道指令中按钮的特定函数的代码,因为我没有通用操作(比如添加新的entires)。即使我有像“add”这样的通用操作,我也必须手动调用控制器中的ab.onclick。希望你能理解我的意图。@Disane不一定能理解。如果要在单击按钮时传递整个对象,只需执行
ng click=“onClick(additionalButtons)”
。但这似乎是一个。。。附言:如果有帮助的话,别忘了检查标记:-)好的,现在我的答案已经回答了,谢谢你的时间,并为开始时的误解感到抱歉:)这很有效,谢谢!但是我需要手动执行按钮本身的功能,对吗?eval(),最好的方法是什么?该函数可能包含AngularJS代码和vanilla js。我不明白你所说的“为按钮本身执行函数”是什么意思,你能详细说明一下吗?我想传递一个包含n个按钮、图标、名称和单击按钮时应执行的函数的additionalButtons对象。原因是,我不知道指令中按钮的特定函数的代码,因为我没有通用操作(比如添加新的entires)。即使我有像“add”这样的通用操作,我也必须手动调用控制器中的ab.onclick。希望你能理解我的意图。@Disane不一定能理解。如果要在单击按钮时传递整个对象,只需执行
ng click=“onClick(additionalButtons)”
。但这似乎是一个。。。注:如果有帮助,请不要忘记检查标记:-)好的,现在我的答案已经回答了,谢谢您的时间,并对开始时的误解表示抱歉:)