2016-09-18 17 views
0

で$スコープにCONCATENATE文字列。私はそれらの値が1に等しいかどうかチェックしたい、それを真に変更する、そうでなければ偽になる。アンギュラ私は名前を持つ4つの値を持つループ

私は4つの可変のため、この方法でこれを行うことができます:

 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); 
     }) 

そして、上記のループで4つの変数をチェックしたいと思います。なにか提案を ?

編集:

を私は角度マテリアルチェックボックスでそれらを表示したい:

    <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'はデフォルトで 'falsy'と' truthy'です。同じ変数を変更すると、それはその意味を変更します。あなたは真実か偽であるかの視野に表示したいですか?それとも内部的な計算のためだけですか? –

+0

そのような値のうち4つだけの場合は、他の場合は完璧です。可能であれば、三項演算子を使用しないでください。ここにリンクがあります。 http://stackoverflow.com/a/12022491/1907391 –

+0

さらに、0は偽であり、1は最終的に真です。 –

答えて

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

0

。 0は偽に相当し、1は真と等価です。

[材料]チェックボックスは、これらの値を「偽」または「真実」と解釈する必要があります。少なくとも、チェックボックスを使用してデータを提示することは問題ありません。

しかし、チェックボックスはモデル(プロパティ)の適切なbool値を変更したときに "書き込む"ため、0,1、真、偽の値が混在する可能性があります。

希望すると便利です。

関連する問題