2016-11-27 4 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

Try:

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

Смежные вопросы