我知道这里已经被问过了,但是在我向数据库添加新数据后结果没有更新时,我仍然遇到了这个问题。
我有一个用于添加和检索数据的控制器
.controller('GameCtrl', ['$scope', function(scope) {
scope.createGame = function() {
Api.createGame(postData).then(function(result) {
console.log(result);
scope.$broadcast("event: list updated", true);
}, function(result) {
console.log(result.data.message);
scope.showError = true;
scope.data = 'Warning! '+result.data.message;
});
};
var quizmaster = {};
quizmaster.gameList = function() {
Api.getGameList().then(function(result) {
console.log(result.data);
scope.games = [];
scope.games = result.data;
}, function(result) {
console.log(result);
});
};
scope.$on("event: list updated", function(value) {
console.log('event update');
quizmaster.gameList();
});
}]);
广播事件正常工作并调用quizmaster.gameList()函数以在添加后加载游戏列表。控制台中显示的数据未更新,新创建的数据尚未更新。但是当我查看我的数据库时,已经存储了新添加的数据。它只需刷新页面即可更新列表。如何在不刷新页面的情况下反映视图中添加的数据?
感谢您的帮助!
更新:Api.getGameList()是一项服务。
.factory('Api', function($http) {
return {
getGameList: function(params) {
return $http({
method : 'GET',
url : api + 'games/list',
params : params,
headers : {'X-GameApp-Token' : credential.token}
});
}
}
});
答案 0 :(得分:0)
什么是Api.getGameList()?如果它是在angular之外完成的(即then()不是来自$ http承诺)那么你必须通知你的更改角度。将数据换行设置为$scope.apply()
:
$scope.$apply(function() {
scope.games = result.data;
});