2015-05-15 64 views
8

我有按鈕,這樣作出動態函數NG單擊

<button ng-click="method = 'create'; title = 'Create'>create</button> 
<button ng-click="method = 'update'; title = 'Update'>update</button> 

以上這

<button ng-click="create(param)">{{ title }}</button> 
<button ng-click="update(param)">{{ title }}</button> 

代碼工作正常,但我想讓它充滿活力。

所以我改變它如下。

<button ng-click="{{ method }}(param)">{{ title }}</button> 

這是不行的,我不知道爲什麼,但如果我做檢查元素,上面的代碼生成如前所述糾正代碼。

回答

24

使用bracket notation

<button ng-click="this[method](param)">{{ title }}</button> 

this點到目前的範圍對象,以便與this[method]您可以通過訪問變量名的方法。

+1

剛剛創建了一個Plnkr http://plnkr.co/edit/aWIS1oHja11hGm4pycMC?p=preview –

+0

thx u非常,好友^ _^ –

2

這並沒有爲我工作..和..

我不想處理有我的角度應用程序,或指令,或使用eval HTML代碼。所以我剛剛結束我的現有功能於一身的功能:

$scope.get_results = function(){ 

    return { 
      message: "A message", 
      choice1: {message:"choice 1 message", f: function(){$scope.alreadyDefinedFunction1()}}, 
      choice2: {message:"choice 2 message", f: function(){$scope.alreadyDefinedFunction2()}}, 
     }; 
} 

在不同的功能:

使用
$scope.results2 = $scope.get_results(); 

片段中的HTML:

<ul class="dropdown-menu scroll-div"> 
    <li><a ng-click="results2.choice1.f()">{{results_2_menu.choice1.message}}</a></li> 
    <li><a ng-click="results2.choice2.f()">{{results_2_menu.choice2.message}}</a></li> 
</ul> 

正是基於此js的小提琴: http://jsfiddle.net/cdaringe/FNky4/1/

+0

這對我有效!但接受的答案並沒有。謝謝 – JoeCodeCreations

0

該句法看起來效果不錯

<button ng-click="this[method(param)]">{{ title }}</button> 

從用戶dfsq的建議開始,並且由於該建議與angularjs 1.6.4不兼容,我將關閉框放在參數值之後。