2013-08-21 52 views
0

所以,我试图建立在我的灰烬申请途径动态地从API端点,/categories,与Ember的数据。为了做到这一点,我加入一个didLoad方法我的模型,它是由控制器进行调用,并设置为控制器的性能。我将路由映射到我的路由器,并且所有工作正常。当我试图通过由findQuery检索的服务器的数据设置内容属性来设置控制器时,真正的麻烦开始了。灰烬数据 - 类型错误:对象没有方法“eachRelationship”

这是错误:

TypeError {} "Object /categories/548/feeds has no method 'eachRelationship'" 

这是代码:

window.categoryRoutes = []; 

App.Categories = DS.Model.extend({ 
    CATEGORYAFFINITY: DS.attr('boolean'), 
    CATEGORYID: DS.attr('number'), 
    CATEGORYNAME: DS.attr('string'), 
    CATEGORYLINK: function() { 
    var safeUrl = urlsafe(this.get('CATEGORYNAME')); 
    categoryRoutes.push(safeUrl); 
    return safeUrl; 
    }.property('CATEGORYNAME'), 
    didLoad: function() { 
    var categoryLink = this.get('CATEGORYLINK'); 
    var categoryId = this.get('CATEGORYID'); 

    App.Router.map(function() { 
     this.resource(categoryLink, function() { 
     // some routes 
     }); 
    }); 

    App[Ember.String.classify(categoryLink) + 'Route'] = Ember.Route.extend({ 
     setupController: function(controller, model) { 
     // source of error 
     this.controllerFor(categoryLink).set(
      'content', 
      this.store.findQuery('/categories/' + categoryId + '/feeds', { 
      appid: 'abc123def456', 
      lat: 39.75, 
      long: -105 
      }) 
     ); 
     } 
    }); 
    } 
}); 

任何 'HALP' 表示赞赏!另外,如果我这样做完全错了,并且有更像Ember的方式来做到这一点,我想知道。

+0

另外,我忘了提,我使用灰烬1.0.0-rc.7和灰烬数据r13.1,从鲍尔,在他们的CommonJS -shims包。 –

回答

0

我想通了。我得到了这个错误,因为我传递了一个字符串,而不是从App.Helpers对象中的一个真正的“类型”到我重写的一些自定义RESTAdapter代码中的提取方法。

解决方法是使用我的自定义类型名称在App.Helpers中传入相应的模型助手。

像这样的事情在重写RESTAdapter.serializer.extractMany方法:

var reference = this.extractRecordRepresentation(loader, App.Helpers[root], objects[i]); 
相关问题