JavaScript不更新$ scope变量的一部分

时间:2016-04-14 00:06:27

标签: javascript angularjs

供参考,我使用带有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>
...

1 个答案:

答案 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);
      });
    };
  });
});