角度视角与模型的承诺与同步

时间:2014-12-10 22:10:34

标签: angularjs promise angular-promise angular-services

我的基本问题是保持模型和视图在角度上同步的最佳实践是什么,特别是当它是单个对象时。我一直试图玩弄承诺,但似乎无法得到任何工作。我想要做的是增加帖子上的upvotes,这是一个流行的例子。

好的继承代码:我正在处理的函数是incrementUpvotes函数。

厂:

(function() {
  ngNewsApp.factory('posts', posts);

  posts.$inject = ['$http', '$q'];

  function posts($http, $q) {
    var service = {
      postList: [],
      getPosts: function() {
        return $http.get('/posts').success(function(data) {
          angular.copy(data, service.postList);
        });
      },
      savePost: function(post) {
        return $http.post('/posts', post).success(function(data) {
          service.postList.push(data);
        });
      },
      getPost: function(id) {
        return $http.post('/posts/' + id).success(function(result) {
          return result.data;
        });
      },
      upvote: function(post) {
        return $http.put('/posts/' + post._id + '/upvote');
      }
    };

    return service;
  }

})();

控制器:

ngNewsApp
  .controller('MainCtrl', ['$scope', 'posts', function ($scope, posts) {
    $scope.posts = posts.postList;

    $scope.addPost = function() {
      if(!$scope.title || $scope.title === '') {
        return;
      }

      posts.savePost({
        title: $scope.title,
        link: $scope.link
      });

      $scope.title = '';
      $scope.link = '';
    };

    $scope.incrementUpvotes = function(post) {
      posts.upvote(post).success(function(post) {
        post.upvotes++;
      });
    };
  }]);

0 个答案:

没有答案