Подтвердить что ты не робот

Как сравнить значение string в ng-show внутри customdirective?

Попытка использовать директиву с инструкцией ng-show в ней. В принципе, он проверяет значение строки, которая является свойством status_p1 в jsonarray 'names':

ng-show="name.status_p1==working"

Директива определяется следующим образом:

app.directive('radioButton',function(){
  return {
    restrict: 'E',

    replace: 'true',

    template: '<table border="2px">' +
    '<tr><td>{{name.name}}</td><td>Working</td><td><img src="http://www.iconshock.com/img_jpg/REALVISTA/general/jpg/256/cross_icon.jpg" alt="img1" id="imgworking" ng-show="name.status_p1!=working"><img src="http://png-1.findicons.com/files/icons/2198/dark_glass/128/camera_test.png" alt="img2" ng-show="name.status_p1==working"></td></tr>' +
    '</table>'
  };
})

Контроллер + namesarray на моей главной странице выглядит так:

 app.controller('MainCtrl', function($scope) {
 $scope.names = [
    {
      name: 'couple 1',
      status_p1: 'working',
      status_p2: 'retired'
    }

  ]
});

И, наконец, главная страница:

<body ng-controller="MainCtrl">
    <div ng-repeat="name in names">
      <radio-button></radio-button>
    </div>
</body>

В настоящее время отображается крест, где он должен показывать чек/галочку. Я ожидал, что условие будет оценено в TRUE, потому что свойство status_p1 равно "работает". Как я могу изменить это ng-showstatement, чтобы заставить сравнение строк работать? Ссылка plunkr: http://plnkr.co/edit/3VdsbsSHpkNJFVnvkmOW?p=preview

4b9b3361

Ответ 1

Выражение

ng-show="name.status_p1==working"

сравнивает name.status_p1 с свойством working в текущей области действия, которое не определено в вашем случае. Вам нужно сравнить его с литеральной строкой 'working'.

ng-show="name.status_p1=='working'";

Изменено Plunkr

Ответ 2

В моем случае у меня было это:

ng-show ="authenticated == {{it.logged_in_view}} || {{it.logged_in_view == 'neutral'}}"

и пришлось изменить его на это:

ng-show ='authenticated == {{it.logged_in_view}} || {{it.logged_in_view == "neutral"}}'

Я вложил строку атрибута в одинарные кавычки и строку, которую нужно сравнить в двойных кавычках.