Установить значение в HTML с AngularJS
Я использую Angular JS. Я выделяю часть области видимости, которая с самого начала является массивом JSON.
Мне нужно проверить, существует ли значение в этом массиве. Если это так, он должен что-то сделать. Следующий код работает, но я не могу найти способ временного сохранения "статуса".
<div ng-repeat="item_value in item['slug'].values">
{{item_value}}
<div ng-if="item_value == 'dogs_cats'">
Somehow save "status" to true when above is equal.
</div>
</div>
<div ng-if="status == 'true'">
Do someting here.
</div>
Может быть, мой подход неверен. Может быть, это не должно идти в шаблоне? Мне нравятся разные решения на выбор и предложения, которые будут предпочтительнее.
2 ответа
Я думаю, что-то вроде этого будет делать:
<div ng-if="item_value == 'dogs_cats'" ng-init="status = true">
Somehow save "status" to true when above is equal.
</div>
Но желательно, чтобы вы поместили эту логику в контроллер
Вы должны рефакторировать часть этого в контроллер. Попробуйте что-то вроде:
HTML:
<div ng-controller='itemSlugs'>
<div ng-repeat="item_value in item['slug'].values">
{{item_value}}
</div>
<div ng-if="status">
Do something here.
</div>
</div>
Javascript:
angular.module('myApp', []).
controller('itemSlugs', ['$scope', function($scope){
$scope.item.slug.values = [ /*initialize here*/ ];
$scope.status = false;
$scope.$watch('item.slug.values', function(){
$scope.status = false;
$scope.item.slug.values.forEach(function(item_value){
if (item_value == 'dogs_cats'){
$scope.status = true;
}
});
});
});
Я добавил часы, так что если какие-либо значения в вашем item.slug.values изменятся, то статус обновится соответствующим образом.