2016-06-13 3 views
0

jsonから取得した値に基づいて作成しているクラスを変更しようとしていますが、その上でユーザーcliksを変更すると変更されますが、動作させられません。クリック時の角の変化ng-class

これは、コントローラでの私のコードです:

$scope.like = function(){ 
     if ($scope.class === "ion-ios-heart-outline") 
     $scope.class = "ion-heart"; 
     else 
     $scope.class = "ion-ios-heart-outline"; 
    }; 

とビュー内の要素:

<i ng-click="like()" ng-class="{ 'ion-heart' : article.like == 1, 'ion-ios-heart-outline' : article.like == 0}"> 
+0

にarticle.like上の値に基づいてクラスを設定する理由はないしようとしていますコントローラーの同じフラグの値を変更するだけですか?また、 '$ scope.class'をビューのどこにも使用していません。 – Rajesh

+0

あなたはそれを行う方法のコード例を表示していただけますか? – Marco

+0

記事を 'ng-click =" like(article) "'にしてlikeフラグを1に設定する '$ scope.like = function(article){article.like:article.like == 1? 0:1; }; ' –

答えて

2

あなたはとても、(ビューで使用されることはありません)$scope.classng-classを混合しています私はあなたが何をしたいかについて完全にはわかっていません。しかし、あなたが探しているものは次のとおりです:

次に、記事が好きだったかどうかに基づいてCSSクラスが変更されます。

+0

関数のパラメータに' article'を追加することを忘れないでください。第二の考えでは、 'ngRepeat'の中になければ - –

+0

@AlonEitanにする必要はありません。それはユースケースに完全に依存します。 – str

+0

'!$ scope.article.like'を確認することもできます。 OPがビュー上でこの変数を直接使用している場合、最初のクリックは処理されません。 '!$ scope.article.like?1:0'を試してください。これは' undefined'と '0'を扱います。 – Rajesh

0

このplunkerをチェックしてください。

https://plnkr.co/edit/1LNxXlDRpzzZImspJJKE?p=preview

$scope.article= {}; 
$scope.article.like = 1; 
$scope.like = function() 
{ 
$scope.article.like = ($scope.article.like === 0 ? 1 : 0); 
}; 

うまくいけば、あなたは、あなたがビュー上で '1' article.like ==をチェックしている場合

関連する問題