2016-04-14 29 views
1

参考のために、私はAPI呼び出しのためにRestangularでMEANスタックを使用しています。

post.tags変数は、私のスクリプトが(オブジェクトの残りの部分と共に)更新するはずの文字列の配列です。問題は、postオブジェクト内の他の変数が問題なく、変数が更新されていないということです。

更新する前にビュー内で簡単に変更できるように、配列に1つの文字列を追加しますが、行が正しく更新されない原因と思われます。ビュー内の保存ボタンをクリックしたときに$scope.tagsが更新されなかったことを確認するためにコンソールログが挿入されています。ビューの小さな双方向バインディングは、saveを押す前に更新されることを示していますが、そのボタンを押すと元の値に戻ります。

これはかなり些細な問題のようですが、解決策を見つけるのが難しいです。どんな助けでも大歓迎です。すべての一時変数$scope.tagsを使用して、ちょうど$scope.post.tagsを使用していないことで、私の問題を修正しました

ポストedit.js

.controller('PostEditCtrl', function ($scope, $location, $routeParams, Post) {  
    $scope.editPost = true; 
    $scope.post = {}; 
    Post.one($routeParams.id).get().then(function(post) { 
    $scope.post = post; 
    $scope.tags = $scope.post.tags.join(); 
    $scope.savePost = function() { 
     $scope.post.tags = $scope.tags.replace(/[\s]/g, '').split(','); 
     console.log($scope.tags); 
     $scope.post.save().then(function() { 
     $location.path('/post/' + $routeParams.id); 
     }); 
    }; 
    }); 
}); 

ポストedit.html

... 
<div class="form-group"> 
    <label for="content" class="control-label">Tags</label> 
    <input type="text" ng-model="tags" class="form-control" id="tags" placeholder="Enter a comma separated list of tags"> 
    <p>{{tags}}</p> 
</div> 
... 
+0

'$ scope.tags = $ scope.post.tags.join()を追加してみてください;'行 '$スコープの後.post.tags'を 'savePost()'関数で更新します。自動的に更新されると期待していますが、#scopeオブジェクトのメンバーにバインドされていません。 – trans1st0r

+0

上記を試してみてください。 – trans1st0r

+0

遅れてごめんなさい、stackoverflowを初めて使用して助けてくれて申し訳ありません。私は電子メール通知を正しく設定しました... 'join()'は、タグの配列をカンマ区切りに変換するので、ユーザーがビュー内で編集するための文字列。 'savePost()'関数内に移動すると、ビューはユーザーが編集できる文字列を取得しません。 – CudB

答えて

1

。最終的なJSファイルは以下の通りです:

ポストedit.js

.controller('PostEditCtrl', function ($scope, $location, $routeParams, Post) {  
    $scope.editPost = true; 
    $scope.post = {}; 
    Post.one($routeParams.id).get().then(function(post) { 
    $scope.post = post; 
    $scope.post.tags = $scope.post.tags.join(); 
    $scope.savePost = function() { 
     $scope.post.tags = $scope.post.tags.replace(/[\s]/g, '').split(','); 
     $scope.post.save().then(function() { 
     $location.path('/post/' + $routeParams.id); 
     }); 
    }; 
    }); 
}); 
+0

$ scope.tagsがバインドされていても、なぜ更新されないのだろうか?テキスト入力。 – trans1st0r

+0

ええ、私はそれについても不思議に思っていました。ソリューションのために私は一時変数を削除しただけなので、私は欠けていることが少ししかありません。 – CudB

関連する問題