2

各ドレスには ID が割り当てられます。ドレス ID は、$StateParams関数内およびページ URL (例: #/dresses/21) 内で見つけることができます。

ユーザーが Heart (Like) または Broken Heart (Dislike) ボタンをクリックすると、ドレス ID が localstorage Heart/Broken Heart 配列内に配置されます。以下を参照してください。

また、いずれかのボタンがクリックされると、ボタン自体が無効になり、複数のドレス ID が押されるのを防ぎます! これは、opersit ボタンをクリックすることで元に戻すことができます。

問題!
ページを更新した後に同じドレス ID が送信されないようにする方法がわかりません - ドレス ID をプッシュする前に配列を検索しようとしましたが、うまくいきませんでした。また、ダブルクリックを防ぐことで二重のドレス ID が送信されるのを防ぐことができますが、ページを更新すると、ドレス ID が既に存在するにもかかわらず、ボタンがドレス ID をアレイにプッシュできます!

どんなガイダンスも大いに役立ちます!
ありがとうございました。

デザイン: HTML:
ここに画像の説明を入力

<ul class="railcontrols">
  <li>
    <md-button aria-label="" class="md-fab md-mini" ng-click="heart()" ng-dblclick="return false;" ng-disabled="heartflag">
      <md-icon md-svg-src="svg/heart.svg"></md-icon>
    </md-button>
  </li>
  <li>
    <md-button aria-label="" class="md-fab md-mini" ng-click="brokenheart()" ng-dblclick="return false;" ng-disabled="brokenheartflag">
      <md-icon md-svg-src="svg/brokenheart.svg"></md-icon>
    </md-button>
  </li>
</ul>

コントローラ:

   fittingApp.controller('railsCtrl', ['$scope', '$localStorage', '$stateParams','$filter', function($scope, $localStorage, $stateParams, $filter) {
      $scope.$storage = $localStorage;
      var dressID = $stateParams.id;
      if ($scope.$storage.userLoveList === undefined) {
        var getUserID = $scope.$storage.profileData.userID;
        $scope.$storage.userLoveList = ({
          'userID': getUserID,
          'heart': [],
          'brokenheart': []
        });
      }
      $scope.heartflag = false;
      $scope.heart = function() {
        $scope.heartflag = true;
        $scope.brokenheartflag = false;
        // Push Heart
        $scope.$storage.userLoveList.heart.push({'dressID': dressID});
        // Remove BrokenHeart
        $scope.$storage.userLoveList.brokenheart = $filter('filter')($scope.$storage.userLoveList.brokenheart, {dressID: '!'+dressID});
      };
      $scope.brokenheartflag = false;
      $scope.brokenheart = function() {
        $scope.brokenheartflag = true;
        $scope.heartflag = false;
        // Push Broken Heart
        $scope.$storage.userLoveList.brokenheart.push({'dressID': dressID});
        // Remove Heart
        $scope.$storage.userLoveList.heart = $filter('filter')($scope.$storage.userLoveList.heart, {dressID: '!'+dressID});
      };
    }]);

出力 {{$ストレージ | json}}

{
  "userLoveList": {
    "userID": "1",
    "heart": [
      {
        "dressID": "21",
        "dressID": "21", // Prevent Duplicates
        "dressID": "19"
      }
    ],
    "brokenheart": [
     {
        "dressID": "10"
     }
    ]
  }
}
4

1 に答える 1