我正在使用AngularJS創建一個簡單的TODO應用程序,當響應來臨時我將數據發佈到服務器,該響應我想要存儲它現有的變量並刷新視圖。即
// This stores on page load, its working fine
var todos = $scope.todos = sever_passed_data;
但是當我做,
$scope.$watch('todos', function() {
var request = $http({
method: "post",
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
url: my_url,
data: $.param({todos_list: angular.toJson(todos)})
});
request.success(function(responce){
var todos = $scope.todos = responce;
});
}, true);
在此之後它給了我不可思議(它會在無限循環並且發佈數據到服務器)輸出,我指的是responce
不專賣店在todos
變量。
它看起來好像你看'todos'你的範圍,然後在反應,這導致另一個觀察週期,再次更新它,這會導致另一個觀察週期更新它,在... –
@MarcKline是的,我認爲這是它發生的事情,建議我如何解決這個問題? – Jay
第一個建議是將你的$ http /模型的東西放入服務中。這可以幫助你避免麻煩。然後看看使用$ watch的替代方案。例如,您可以在用戶提交後立即更新視圖,然後手動觸發POST並僅在服務器返回故障時回滾UI更新。 –