2016-12-12 12 views
0

私は製品のリストを持っています。一つの製品をクリックすると、データベースに追加する必要があります。同じ製品をクリックすると、データベースから削除する必要があります。wishlistFlagng-clickに切り替えています。 1つのdiv要素でうまくいくはずです.2つ目のdiv要素は1つ目のdiv要素の逆に動作しています。最初の製品が追加された場合、2番目の製品をクリックすると追加する必要がありますが、ng-repeatで特定のdiv要素を切り替える方法は?

<div class="hmpal-prprt-post-wdgt hmpal-prprt-wishlist"> 
    <a href=""> 
     <span class="prprt-icon"><i class="fa fa-heart" aria-hidden="true" 
      ng-click="WishlistAdd($index,project.propertyId)"></i></span> 
     <span>Wishlist</span> 
    </a> 
</div> 

とコントローラのコード内の私は別の製品のためのトグルwishlistFlagを実装することができますどのように、ここで

a.WishlistAdd = function (index,propertyId) { 

    a.wishlistFlag = !a.wishlistFlag; 

    var data = { 
     wishlistFlag:a.wishlistFlag, 
     propertyId:propertyId 
    }; 

    e.createWishLists(data).then(function (result) { 
     alert("sucesss"); 
     alert(JSON.stringify(result)); 
    }, function (error) { 
     alert("error"); 
     alert(JSON.stringify(error)); 
    }); 
} 

です。

+0

各製品に別々のフラグを設定する必要があります。ここでは、すべての製品に対して1つのフラグしか保持していません。 – Kenny

+0

各製品に別々のフラグを設定する方法。なにか提案を? –

答えて

1

ようにコードを書くことができますあなたのコードが正しいならば)。コントローラーで定義されているselectedProductId変数は、選択された製品がない場合はnull、製品がある場合は製品IDです。

を切り替えるには、現在選択されているIDとクリックされたIDが等しいかどうかを確認します。

私が送信されたデータでwishListFlag === true

  1. は、あなたがpropertyIdで識別 製品を追加すると、そうでない場合は、データベースから 製品を削除する場合と仮定します。
  2. 製品を追加すると、サーバー側には実際に選択された製品がある場合は、その製品が置き換えられます。

// Is there a selected product ? 
var selectedProductId = null; 

a.WishlistAdd = function (index, propertyId) { 

    selectedProductId = (selectedProductId === propertyId ? null : propertyId); 

    var data = { 
     wishlistFlag: (selectedProductId !== null), 
     propertyId: propertyId 
    }; 

    e.createWishLists(data).then(function (result) { 
     alert("sucesss"); 
     alert(JSON.stringify(result)); 
    }, function (error) { 
     alert("error"); 
     alert(JSON.stringify(error)); 
    }); 
} 
0

$ indexを使用して、wishListのそれぞれに別のフラグを付けることができます。ここでは、あなたが代わりにboolean旗を持っていることのあなたの欲しい物のリストで選択した最大1つの製品を、たいので、あなたがpropertyIdと呼ばれる(選択された製品IDを使用することができます。..

a.wishListFlag[index]

0

ので、データベースから削除し、他の配列がデータベースと配列から削除した場合、IDが配列であることをデータベースチェックを保存する前に追加propertyIdsの配列を維持します。

var wishList = []; 

    a.WishlistAdd = function (index,propertyId) { 


     var data = { 
      wishlistFlag: wishList.indexOf(propertyId) === -1, 
      propertyId:propertyId 
     }; 

     e.createWishLists(data).then(function (result) { 

      //add or remove propertyid from whishList 
      if(data.wishlistFlag) 
       wishList.push(propertyId); 

      else 
       wishList.splice(wishList.indexOf(propertyId), 1); 

      alert("sucesss"); 
      alert(JSON.stringify(result)); 
     }, function (error) { 
      alert("error"); 
      alert(JSON.stringify(error)); 
     }); 
    } 
関連する問題