Установить значение в 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 ​​изменятся, то статус обновится соответствующим образом.

Другие вопросы по тегам