2016-11-27 92 views
0

我有以下問題。我想重複菜單鏈接。但該程序不會創建相應的點擊處理程序。如何在ngRepeat(AngularJS)中重複點擊處理程序?

查看:

//view is created by Angular Material 
<md-menu-item ng-repeat="mItem in ::menuItems"> 
    <md-button ng-click="mItem[action]"> 
     <md-icon>{{ ::mItem.icon }}</md-icon> 
     {{ ::mItem.name }} 
    </md-button> 
</md-menu-item> 

Ctrl鍵:

$scope.menuItems = [ 
     { icon: 'mode_edit', name: 'Edit', action: 'clickEdit()' }, 
     { icon: 'delete', name: 'Delete', action: 'clickDelete()' } 
    ]; 

$scope.clickEdit = clickEdit; 
$scope.clickDelete = clickDelete; 

    function clickEdit() { 
     $log.info('edit clicked'); 
    } 

    function clickDelete() { 
     //code... 
    } 

我需要做的就是在ngClick的處理程序是什麼?

回答

1

我認爲這是最好保持這種邏輯在這樣的服務:

//view is created by Angular Material 
<md-menu-item ng-repeat="mItem in ::menuItems"> 
    <md-button ng-click="action(mItem.action)"> 
     <md-icon>{{ ::mItem.icon }}</md-icon> 
     {{ ::mItem.name }} 
    </md-button> 
</md-menu-item> 

$scope.menuItems = [ 
    { icon: 'mode_edit', name: 'Edit', action: 'edit' }, 
    { icon: 'delete', name: 'Delete', action: 'delete' } 
]; 

$scope.action = function(actionName){ 
    // call service 
} 
+0

這是一個很好的解決方案,我會嘗試它:)並給你一個反饋。 – yuro

-1

嘗試:

//view is created by Angular Material 
<md-menu-item ng-repeat="mItem in ::menuItems"> 
    <md-button ng-click="mItem['action']"> <!--there is other variant below--> 
     <md-icon>{{ ::mItem.icon }}</md-icon> 
     {{ ::mItem.name }} 
    </md-button> 
</md-menu-item> 

這裏的其他變種:

<md-button ng-click="mItem.action"> <!--there is other variant below--> 
+0

感謝您的幫助,但您的解決方案不起作用。 – yuro