2016-10-17 6 views
1

ユーザーがボタンをクリックしたときに、値をfalseからtrueに変更する必要があるAngular関数のペアを作成しています。アプリはユーザーの好きな本を追跡します。ユーザーがお気に入りを作成すると、 'tracking'と 'finished'のデフォルト値はfalseに設定されます。ユーザーがng-clickを使用してtrueに更新すると、新しい 'true'値はデータベースにパッチされず、コンソールにはまだfalseとして記録されます。私の機能に欠けているものについての考えは?ここで角度関数がデータベースを更新しない

$scope.trackFavorite = function(favorite) { 
     var favoriteParams = { 
     id: favorite.id, 
     tracking: favorite.tracking, 
     finished: favorite.finished 
     }; 
     favorite.tracking = !favorite.tracking; 
     $http.patch("/api/v1/favorites/"+favorite.id+".json", favoriteParams).success(function(response) { 
     console.log("READING NOW"); 
     console.log(response); 
     }); 
    }; 

    $scope.markFinished = function(favorite) { 
     var favoriteParams2 = { 
     id: favorite.id, 
     finished: favorite.finished, 
     }; 
     favorite.finished = !favorite.finished; 
     console.log(favorite); 
     $http.patch("/api/v1/favorites/"+favorite.id+".json", favoriteParams2).success(function(response){ 
     console.log("IS IT FINISHED"); 
     console.log(response); 
     }); 
    }; 

は、念のために、ビューからスニペットをクリックNGです:

<div> 
<button ng-class="{tracking: favorite.tracking}" ng-click="trackFavorite(favorite)">Reading Now</button> 
</div> 

<div> 
<button ng-class="{finished: favorite.finished}" ng-click="markFinished(favorite)">Finished</button> 
</div> 

どうもありがとう!

+1

あなたの約束から戻って来るエラーをキャッチして、それが正しく保存されていない理由を説明する必要があります。 – Makoto

答えて

3

httpコンフィグレーションが不足している可能性があります。ここに気付いたように:patch request using angularjs

また、コントローラにエラー機能を実装し、返されたレスポンスに従ってフォームを更新することもお勧めします。

$scope.trackFavorite = function(favorite) { 
     var favoriteParams = { 
     id: favorite.id, 
     tracking: favorite.tracking, 
     finished: favorite.finished 
     }; 

     $http.patch("/api/v1/favorites/"+favorite.id+".json", favoriteParams) 
      .then(
       function(response) { 
        console.log("READING NOW"); 
        console.log(response); 
        //update the UI according to the response 
        favorite.tracking = !favorite.tracking; 
       },function(error){ 
       //clean up when an error occurs 
       }); 

    }; 
関連する問題