【问题标题】:Ember Data hasMany foreach within controllerEmber Data hasMany foreach 在控制器内
【发布时间】:2013-08-22 21:36:04
【问题描述】:

我目前使用 Ember Data 和本地存储适配器设置了以下模型。

App.Game = DS.Model.extend
 stage: DS.attr('number')
 level: DS.attr('number')
 actions: DS.hasMany('App.Action')

App.Action = DS.Model.extend
 type: DS.attr('string')
 time: DS.attr('number')
 game: DS.belongsTo('App.Game')

我可以使用

从模板中访问每个操作
{{#each actions}}
 {{type}}
{{/each}}

但我想从控制器中访问同样的数据。

有什么办法吗?

以下内容返回动作长度,但我想对每个动作进行 forEach。

actionsLength: (->
 @get('actions').get('length')
).property('actions.@each')

这个控制器的路由如下。

App.GameRoute = Ember.Route.extend
 model: (params) ->
  App.Game.find(params.game_id)

任何帮助将不胜感激。

【问题讨论】:

    标签: ember.js controller ember-data


    【解决方案1】:

    根据您希望从哪个控制器访问操作,您是否尝试过访问控制器的content,例如:

    App.ActionsController = Ember.ArrayController.extend({
      myFunction: function() {
        this.get('content').forEach(function(action) {
          console.log(action.get('type'));
        });
      }
    });
    

    或来自您的GamesController

    App.GamesController = Ember.ArrayController.extend({
      myFunction: function() {
        this.get('content').forEach(function(game) {
          game.get('actions').forEach(function(action) {
            console.log(action.get('type'));
          });
        });
      }
    });
    

    (抱歉没有将代码合并)

    希望对你有帮助。

    【讨论】:

    • 嗨,我已经尝试了上述方法,但是因为您确认我所做的事情是正确的,所以我尝试了其他一些方法。如果我刷新页面,每个 action.get('type') 都会返回 null。如果我通过 linkTo 或转换访问页面,则类型数据就在那里。刷新时可能无法加载的任何想法?谢谢你的帮助!把我逼疯了,结果我做对了,但被另一个问题抓住了。
    • @TomCoates,您能否更新您的问题,说明您的路线从您加载记录的位置开始的样子?您是否还将hasMany 关系设置为默认的embedded: 'load'embedded: 'always
    • 如果我使用@get('actions').get('firstObject'),即使在页面刷新时我也可以访问第一个操作。我会将路线的外观添加到我原来的问题中。
    • @TomCoates,这可能会发生,因为记录是异步加载的,HasManyArray 在记录到达时被填充,您应该确保在循环之前加载所有记录。没有看到你的设置看起来有点难以猜测
    • 仍然不知道为什么当我在 forEach 中进行简单的 console.log 操作时,我可以在刷新页面时看到 data.attributes 中的类型。似乎数据在那里,但无法使用 this.get('type') 访问它。我已经尝试过“加载”和“总是”。再次感谢你的帮助。我很感激没有看到完整的设置是很困难的。
    猜你喜欢
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 2016-07-24
    • 1970-01-01
    相关资源
    最近更新 更多