2013-12-13 26 views
0

在成功的API POST之後,在視圖中更新模型的正確方法是什麼?我有一個textarea,類似於Twitter,用戶可以輸入文本和文章。輸入的文本必須在成功發佈後立即顯示。在Angular中動態更新視圖的正確方法

如何實現這一目標?我應該再打一次電話來分別獲取帖子還是有其他方法可以做到這一點?

我的代碼看起來像

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

我假設你發佈一個新的職位和一般職位的樣子:

{ 
    id: 42, 
    text: 'This is my text' 
} 

在這種情況下,你可以這樣做:雖然寫的RESTful服務時

$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}); 
    }) 
}; 

一個更好的做法只是讓你的POST返回一個實際的JSON對象,添加了新的feed(不僅僅是id)。如果是這種情況,您可以將其添加到您的供稿數組中。

如果你的JSON對象很複雜,這種做法是最常見的一種最簡單的方法來處理這個問題,而不需要額外的請求到服務器。由於您已經在服務器上,並且您可能已經創建了該對象(爲了能夠將其插入到數據庫中),所有您需要做的就是將其序列化回HTTP響應。這幾乎不增加開銷,併爲客戶提供所需的所有信息以便輕鬆更新。

+0

謝謝,如果飼料比較複雜,比如像計數,星星等圖像會怎樣?應該包含所有這些?它在FB,Twitter等熱門網站中的工作原理 – kumarz

+0

請參閱我添加的最後一段。是的,這是大多數RESTFUL API中的常見模式。 – dtabuenc

相關問題