EmberJS - 与hasMany关系的记录无法加载

时间:2013-09-09 19:39:14

标签: javascript ember.js local-storage ember-data

我正在使用EmberJS 1.0.0和Ember Data 1.0.0 beta以及LocalStorage Adapter的最新版本。当我尝试从商店加载具有hasMany关系的记录时,我得到以下错误:

ember-1.0.0.js(第394行)

  

断言失败:你查找了“项目”关系   'App.List:ember236:1',但有些相关记录不是   加载。要么确保它们都与父母一起加载   记录,或指定关系是异步的(DS.attr({async:   是}))

和ember-data.js(第2530行)

  

TypeError:解析器未定义   然后(resolver.resolve,resolver.reject);

快速演示应用:http://jsbin.com/oKuPev/49(观看控制台)

<script type="text/x-handlebars">      
    List: {{name}}       
    <div>    
        {{#each items}}
            {{id}} - {{name}}<br/>
        {{/each}}
    </div>
</script>

<script type="text/javascript">

    window.App = Ember.Application.create({});        
    App.ApplicationAdapter = DS.LSAdapter.extend({});

    var FIXTURES = {
      'App.List': {
        records: {
          '1': { id: '1', name: 'The List', items: ['1','2'] }
        }
      },
      'App.Item': {
        records: {
          '1': { id: '1', name: 'item 1', list: '1' },
          '2': { id: '2', name: 'item 2', list: '1' }
        }
      }
    }

    // Store fixtures in localStorage
    localStorage.setItem('DS.LSAdapter', JSON.stringify(FIXTURES));

    // Models
    App.List = DS.Model.extend({
        name: DS.attr('string'),
        items: DS.hasMany('item')
    });  

    App.Item = DS.Model.extend({
        name: DS.attr('string') ,
        list: DS.belongsTo('list')
    });


    // Route  
    App.ApplicationRoute = Ember.Route.extend({    
        model: function() {
          // Fails!!!
          return this.store.find('list', 1);           
        }
    });       

  </script>      

我不确定问题是ember.js,ember-data.js还是LocalStorage适配器。

3 个答案:

答案 0 :(得分:16)

您需要将模型上的“项目”定义为async,因为ember会对这些模型单独发出请求,然后将它们异步连接在一起。

App.List = DS.Model.extend({
  name: DS.attr('string'),
  items: DS.hasMany('item',{async:true})
}); 

答案 1 :(得分:3)

如果将items定义为异步关系,则此方法有效。

item: DS.hasMany('item',{async:true})

这是一个有效的jsbin:http://jsbin.com/oKuPev/53/edit

答案 2 :(得分:0)

其他任何偶然发现此线程b / c关联的人都没有加载(但没有错误)请注意将父级与子记录关联的items: [1, 2]