Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 余烬:store.update是否更新所有属性?_Ember.js_Ember Data - Fatal编程技术网

Ember.js 余烬:store.update是否更新所有属性?

Ember.js 余烬:store.update是否更新所有属性?,ember.js,ember-data,Ember.js,Ember Data,我正在Ember.js中创建一个实时多人文本游戏。 到目前为止非常令人兴奋,但我遇到了一个小问题 我有一个游戏模型,看起来有点像这样: App.Game = DS.Model.extend({ numbers: DS.attr(), drawnNumbers: DS.attr(), // array gameStatus: DS.attr(), table: DS.belongsTo('table'), bingoCards: DS.hasMany('bi

我正在Ember.js中创建一个实时多人文本游戏。 到目前为止非常令人兴奋,但我遇到了一个小问题

我有一个
游戏
模型,看起来有点像这样:

App.Game = DS.Model.extend({
    numbers: DS.attr(),
    drawnNumbers: DS.attr(), // array
    gameStatus: DS.attr(),
    table: DS.belongsTo('table'),
    bingoCards: DS.hasMany('bingoCard', { async: true })
});
record = serializer.extractSingle(store, type, data);
// record looks like this:
// {id: "538c56843800226245c3621a", gameStatus: "idle"} 
store.update("game", record);
model: function (params) {
    return this.store.find('game', params.game_id);
},
setupController: function (controller, model) {
    model.reload();

    controller.set('model', model);
},
我的控制器如下所示(省略不必要的信息):

在视图中,我渲染卡片:

{{#each bingoCard in ownBingoCards}}
<div class="col-sm-4">
    <div class="table-responsive">
        <span class="label label-primary">Card {{bingoCard.id}}</span>
        <table class="table table-bordered table-card">
            <tbody>
            {{#each row in bingoCard.squares}}
                 <!-- displaying the numbers here -->
            {{/each}}
            </tbody>
        </table>
    </div>
</div>
{{/each}}
如果我打开控制台,会得到以下信息:

inside ownBingoCards GameController.js:102
inside gameBingoCards GameController.js:32
inside ownBingoCards GameController.js:102
注意:游戏在游戏过程中会收到很多更新,所以每次所有的牌都会重新上牌。我怎样才能防止这种情况

编辑:

在我重新加载特定游戏路径上的页面后,它只会进入ownBingoCards和gameBingoCards中一次,并且不会在每次更新后重新呈现

编辑2:


gameMessages属性也只会被调用一次,为什么gameBingoCards会一直被调用?

好吧,我已经在无数个小时后修复了它

我的路线是这样的:

App.Game = DS.Model.extend({
    numbers: DS.attr(),
    drawnNumbers: DS.attr(), // array
    gameStatus: DS.attr(),
    table: DS.belongsTo('table'),
    bingoCards: DS.hasMany('bingoCard', { async: true })
});
record = serializer.extractSingle(store, type, data);
// record looks like this:
// {id: "538c56843800226245c3621a", gameStatus: "idle"} 
store.update("game", record);
model: function (params) {
    return this.store.find('game', params.game_id);
},
setupController: function (controller, model) {
    model.reload();

    controller.set('model', model);
},
我把它改成这样:

model: function (params) {
    return this.store.find('game', params.game_id);
},
setupController: function (controller, model) {
    model.reload();

    controller.set('model', model);
    controller.set('modelBingoCards', model.get('bingoCards'));
    controller.set('modelMessages', model.get('messages'));
},
另外,我还将属性侦听器更改为
.property('modelMessages')
.property('modelBingoCards')

有人能告诉我为什么会这样吗