0

我正在使用 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>

也许我的方法是错误的。也许这不应该进入模板?我喜欢不同的解决方案可供选择,并提出建议。

4

2 回答 2

0

我认为这样的事情会做:

<div ng-if="item_value == 'dogs_cats'" ng-init="status = true">
    Somehow save "status" to true when above is equal.
</div>

但最好你应该把这个逻辑放在控制器中

于 2014-06-27T09:28:05.187 回答
0

您应该将其中的一些重构为控制器。尝试类似:

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 中的任何值发生更改,则状态将相应更新。

于 2014-06-27T09:39:26.117 回答