0

ここで質問されたことは知っていますが、データベースに新しいデータを追加した後、結果が更新されないというこの問題でまだブロックされています。

データを追加および取得するためのコントローラーが 1 つあります。

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

1 に答える 1

0

Api.getGameList() とは? angular の外部で行われた場合 (つまり、then() が $http promise からのものではない場合)、angular に変更を通知する必要があります。データの設定を次のようにラップします$scope.apply()

$scope.$apply(function() {
    scope.games = result.data;
});
于 2013-10-16T06:17:46.170 に答える