参考のために、私は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>
...
'$ scope.tags = $ scope.post.tags.join()を追加してみてください;'行 '$スコープの後.post.tags'を 'savePost()'関数で更新します。自動的に更新されると期待していますが、#scopeオブジェクトのメンバーにバインドされていません。 – trans1st0r
上記を試してみてください。 – trans1st0r
遅れてごめんなさい、stackoverflowを初めて使用して助けてくれて申し訳ありません。私は電子メール通知を正しく設定しました... 'join()'は、タグの配列をカンマ区切りに変換するので、ユーザーがビュー内で編集するための文字列。 'savePost()'関数内に移動すると、ビューはユーザーが編集できる文字列を取得しません。 – CudB