2017-08-30 84 views
1

當前我正在擴展我的應用程序,因此我可以給出一個指令(它會生成表格網格)一個對象,以顯示其他按鈕(用於添加其他其他操作)。在對象中調用函數作爲指令的參數

現在我可以顯示按鈕,但我需要執行一些代碼作爲功能,應該適用於點擊該按鈕。

對象本身包含在混合方式字符串和函數,就像這樣:

<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> 

我如何可以執行的onclick功能?

回答

0

可以直接調用的範圍對象的功能,在你看來有:

ng-click="yourObject.functionName(parameters)" 

即使沒有參數不要忘記在函數調用括號

這裏是它如何工作的一個演示:

var app = angular.module('myApp', []); 
 

 
app.controller('MyCtrl', function($scope) { 
 
    $scope.additionalButtons = [ 
 
     {'name': 'First', 
 
     'onclick': function() {alert('1')} 
 
     }, 
 
     {'name': 'Second', 
 
     'onclick': function() {alert('2')} 
 
     } 
 
    ]; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="myApp" ng-controller="MyCtrl"> 
 
    <button ng-repeat="ab in additionalButtons" ng-click="ab.onclick()">Click {{ab.name}}</button> 
 
</div>

+0

多數民衆贊成在工作,謝謝!但後來我需要手動執行按鈕本身的功能,對吧?什麼是更好的方法,eval()? 該函數可能包含AngularJS代碼和香草js。 – Disane

+0

我不明白你的意思是「*執行按鈕本身的功能*」,你能否詳細說明一下? – Mistalis

+0

我想用n個按鈕,圖標,名稱和應該在單擊按鈕時執行的函數傳遞additionalButtons對象。 原因是,我不知道指令中按鈕的特定功能的代碼,因爲我沒有通用操作(如添加新的entires)。 即使我有像「添加」的通用操作,我必須手動調用控制器中的ab.onclick。 希望你明白我打算做什麼。 – Disane

相關問題