在成功的API POST之后,在视图中更新模型的正确方法是什么?我有一个textarea,类似于Twitter,用户可以输入文本和发布。输入的文本必须在成功发布后立即显示。
如何实现这一目标?我是否应该另外打电话来单独获取帖子,还是有其他方法可以做到这一点?
我的代码看起来像
feedsResolve.getFeeds().then(function(feeds){
$scope.feeds = feeds;
}
其中feedsResolve是返回承诺的服务
$scope.postFeed = function(){
var postObj = Restangular.all('posts');
postObj.post( $scope.feed.text ).then(function(res){
//res contains only the new feed id
})
}
如何在视图中更新$ scope.feeds?
答案 0 :(得分:0)
我假设您发布了一个新帖子,通常帖子如下:
{
id: 42,
text: 'This is my text'
}
在这种情况下,您可以执行以下操作:
$scope.postFeed = function(){
var postObj = Restangular.all('posts');
var feedText = $scope.feed.text;
postObj.post( feedText ).then(function(res){
$scope.feeds.push({ id: res.id, text: feedText});
})
};
编写restful服务时更好的做法是让POST返回一个实际的JSON对象,其中添加了新的feed(而不仅仅是id)。如果是这种情况,您可以将其添加到您的Feed数组中。
如果您的JSON对象很复杂,这种做法是最常用的最简单的处理方式,无需额外的服务器请求。由于您已经在服务器上,并且您可能已经创建了该对象(为了能够将其插入到数据库中),您所要做的就是将其序列化为HTTP响应。这几乎不增加任何开销,并为客户提供所需的所有信息,以便毫不费力地更新。