无法从路由器加载相关记录(ember 1.0.0和ember-data 1.0.0-beta.1)

时间:2013-09-03 16:32:06

标签: ember.js ember-data

我有一台加载“Place”的路由器。

App.PlaceRoute = Ember.Route.extend({
        model: function(params) {
            return this.store.find('place', params.place_id);
        },
        setupController: function(controller, model) {
            this._super(controller, model);

            //The promise way ?
            var placeId = model.get('id');
            var myRecords = this.store.find('record', {place:placeId}).then(function(recs){
                    console.log("DOES IT HAPPEN ?"); //Never logged
                    this.controllerFor('records').set('content', recs);
            });

            //Or is the good way below ?
            //this.controllerFor('records').set('content', myRecords);

            //The only that works (which is not I want but displays as I would like):
            //this.controllerFor('records').set('content', App.Record.FIXTURES);

            this.controllerFor('places').set('content', this.store.find('place'));
        },
        renderTemplate: function(){
            this.render('place', {
                    controller: 'place'  
            });
            this.render('display-graph-list', {
                    into: 'place',
                    outlet: 'graphs',
                    controller: 'records'  
            });
        }
    });

此地方已关联“记录”。

App.Place = DS.Model.extend({
        name: attr('string')
        , desc: attr('string')
        , records: hasMany('record')
        , site: belongsTo("site")
    });

    App.Record = DS.Model.extend({
            name: attr('string'),
            type: attr('string'),
            data: attr('string'),
            belongsTo: attr('place')
    });

如ember-data 1.0.0 Transition Guide所示,它使用promises来检索数据,但在这里没有任何反应。

这是一个JSbin来看我的意思: http://jsbin.com/iMEdOCe/6/

当我导航到某个地方时,我应该至少显示一条记录。

我无法弄清楚如何加载和显示记录。我错过了什么?

有没有更好的方法来显示模型的子项目数组?

1 个答案:

答案 0 :(得分:0)

这是ember-data 1.0.0-beta.1中的两个问题的组合

缺少显示是由于hasMany / belongsTo关系:将这些行注释到App.Place和App.Record中会显示一些内容。

但是会出现另一个问题:不应使用'data'关键字。

用'datapath'之类的东西替换它可以使它工作。

编辑: 问题通过Ember-data 1.0.0-beta.2解决了