2015-11-25 2 views
1

В моем сайте я использую следующий код:нг-если ... остальное - более читаемая версия

span(class="item-org-panel-name", ng-repeat="org in organizationPath") 
    a(href="", ng-if="! $last") {{ org.Name }} 
    span(ng-if="$last") {{ org.Name }} 

Для всех элементов коллекции, мне нужно, чтобы показать link и я хочу, чтобы показать span вместо за последние элемент.

мне не нравится мой код Becase это не очевидно, что она видна одна

ответ

1

Вы можете использовать ng-switch и ng-switch-when

span(class="item-org-panel-name", ng-repeat="org in organizationPath", ng-switch="$last") 
    a(href="", ng-switch-when="true") {{ org.Name }} 
    span(ng-switch-default) {{ org.Name }} 

ngSwitch

0

вы можете попробовать этот подход, с использованием директивы:

app.directive('whatElementToUse', function($compile) { 
    return { 
    restrict: 'A', 
    scope: { 
     name: '=', 
     showAsSpan: '=' 
    }, 
    link: function(scope, elm, attr) { 
     var tamplate = ''; 
     template = scope.showAsSpan ? '<span>{{name}}</span>' : '<a href="">{{name}}</a>'; 
     elm.html(template); 
     $compile(elm.contents())(scope); 
    } 
    } 
}) 

HTML:

<div ng-repeat="org in main.data" what-element-to-use name="org.name" show-as-span="$last"></div> 

plnkr

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