Angular - 在循环中将字符串连接到$ scope

时间:2016-09-18 06:32:41

标签: javascript angularjs

我有四个名字值:

$scope.restaurant.restaurantIsTop
$scope.restaurant.restaurantIsRecommended
$scope.restaurant.restaurantIsNew 
$scope.restaurant.restaurantIsPromoted

每个都可以是0或1。我想检查它们的值是否等于1,将其更改为true,否则将为false。

我可以使用此方法为四个变量执行此操作:

        if ($scope.restaurant.restaurantIsTop == 1  ?
                $scope.restaurant.restaurantIsTop = true :
                $scope.restaurant.restaurantIsTop = false);
        if ($scope.restaurant.restaurantIsNew == 1  ?
                $scope.restaurant.restaurantIsNew = true :
                $scope.restaurant.restaurantIsNew =false);
        if ($scope.restaurant.restaurantIsRecommended == 1  ?
                $scope.restaurant.restaurantIsRecommended = true :
                $scope.restaurant.restaurantIsRecommended =false);
        if ($scope.restaurant.restaurantIsPromoted == 1  ?
                $scope.restaurant.restaurantIsPromoted = true :
                $scope.restaurant.restaurantIsPromoted =false);  

绝对可行,但它不是多价值的有效方式。所以我创建了一个数组:

var varietyArray = ["restaurantIsTop" ,
                                "restaurantIsRecommended",
                                "restaurantIsNew",
                                "restaurantIsPromoted"

            ];

        angular.forEach (varietyArray, function (val) {

            console.log($scope.restaurant.val);
        })

我想在上面的循环中检查四个变量。有什么建议吗?

已编辑:

我想在Angular Material复选框中显示它们:

                    <div class="col-sm-12">
                            <div class="md-form-group">
                                <md-checkbox ng-model="restaurant.restaurantIsTop ">
                                    best
                                </md-checkbox>
                                <md-checkbox ng-model="restaurant.restaurantIsRecommended">
                                    suggested
                                </md-checkbox>
                                <md-checkbox ng-model="restaurant.restaurantIsNew">
                                    new
                                </md-checkbox>
                                <md-checkbox ng-model="restaurant.restaurantIsPromoted">
                                    promote
                                </md-checkbox>
                            </div>
                    </div>

2 个答案:

答案 0 :(得分:1)

要检查循环中的变量并有条件地设置它,你可以这样:

var $scope = {
  restaurantIsTop: 1,
  restaurantIsRecommended: 0,
  restaurantIsNew: 0,
  restaurantIsPromoted: 1
};

var varietyArray = ["restaurantIsTop" ,
                            "restaurantIsRecommended",
                            "restaurantIsNew",
                            "restaurantIsPromoted"

        ];

angular.forEach (varietyArray, function (val) {

  $scope[val] = ($scope[val]) ? false : true;
  console.debug($scope[val]);
})

您可以使用$scope[VariablenameAsString]

访问范围变量

<强> jsfiddle

答案 1 :(得分:0)

正如有人已经评论过,您不需要更改这些属性的值。 0等于false,1等于true。

“材料”复选框应将这些值解释为&#34; falsy&#34;或&#34; truthy&#34;所以我认为你应该没事,至少在通过复选框呈现数据时。

但请记住,复选框会&#34;写&#34;模型(属性)中的适当bool值,当它们发生变化时,你可能会得到混合的0,1,真,假值。

希望这有帮助!