Angularjs - 添加新的创建数据时,结果不会更新

时间:2013-10-16 05:42:40

标签: angularjs angularjs-scope

我知道这里已经被问过了,但是在我向数据库添加新数据后结果没有更新时,我仍然遇到了这个问题。

我有一个用于添加和检索数据的控制器

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

1 个答案:

答案 0 :(得分:0)

什么是Api.getGameList()?如果它是在angular之外完成的(即then()不是来自$ http承诺)那么你必须通知你的更改角度。将数据换行设置为$scope.apply()

$scope.$apply(function() {
    scope.games = result.data;
});