Как сравнить значение 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
Ответы
Ответ 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"}}'
Я вложил строку атрибута в одинарные кавычки и строку, которую нужно сравнить в двойных кавычках.