供参考,我使用带有Restangular的MEAN堆栈进行API调用。
post.tags
变量是我的脚本应该更新的字符串数组(以及对象的其余部分)。问题是,tags
变量没有更新,post
对象中的其他变量没有问题。
我将数组加入一个字符串中,以便在更新之前可以在视图中轻松修改它,但我怀疑该行也是导致它无法正确更新的原因。我插入了一个控制台日志,以验证当我单击视图中的保存按钮时$scope.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 :(得分:1)
通过完全不使用临时变量$scope.tags
并使用$scope.post.tags
来解决我的问题。最终的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);
});
};
});
});