2014-01-25 45 views
1

我试图使用Ember Data填充模板。 当我尝试在DS Store中查找模型时,出现奇怪的问题。 我跟着一些教程,但有一个恼人的错误。Ember Data:无法从数据存储中获取模型

错误是'加载路径时出错:未定义'。

我已经试过:

MovieTracker.Store = DS.Store.extend({ 
    url: 'http://addressbook-api.herokuapp.com' 
}); 

MovieTracker.Contact = DS.Model.extend({ 
    first: DS.attr('string'), 
    last: DS.attr('string'), 
    avatar: DS.attr('string') 
}); 

MovieTracker.Router.map(function() { 
    this.resource('contacts'); 
}); 

MovieTracker.ContactsRoute = Ember.Route.extend({ 
    model: function(){//works when changing to 'activate:' 
     //return; //this works! it shows me a simple template and updates URL to index.html#/contacts 
     return this.store.find('contact');//error: 'Error while loading route: undefined' 
    } 
}); 

在的Index.html我有一个简单#链接到“通讯录”(应用车把),效果很好。 我也有一个叫联系人的简单模板,当我放弃this.store.find('contact')这一行时,它工作正常。

JSBin:http://emberjs.jsbin.com/OxIDiVU/170/edit?html,js,output 的JSON是:http://addressbook-api.herokuapp.com/contacts

能否请你给我什么建议? 你更喜欢Ember Data(1.0 Beta 5)吗? 另一个问题:没有预编译车把的网站是不是一个好主意?

非常感谢您的阅读!

+0

从服务器正确的反应如何?你可以发布服务器的响应吗?让Ember数据工作是有点问题,但一旦一切都解决了,它确实工作得很好。我在Ember.js和Ember数据上设置了一个相当大的网站。 – Gogu

+0

嗨Gogu,当然,这是我使用的spesific网址:http://addressbook-api.herokuapp.com。 Ember Data实际上应该访问此网站/联系人,并获取JSON。我希望我能成功设置好你的一切,谢谢! – TechWisdom

+0

我一直在玩,并发现如果我将ContactsRou​​te中的'model:'属性更改为'activate',它会越来越好。错误没有显示,但另一个错误叫我'关于必须是数组'的循环。我不知道将“模型”更改为“激活”的意义,但希望它能帮助您了解错误的起源。 – TechWisdom

回答

1

在定义主机时,您在适配器上定义该主机,而不是在商店中定义该主机。

MovieTracker.ApplicationAdapter = DS.RESTAdapter.extend({ 
    host: 'http://addressbook-api.herokuapp.com' 
}); 

此外,你不应该定义模型上的ID,它的存在默认

MovieTracker.Contact = DS.Model.extend({ 
    first: DS.attr('string'), 
    last: DS.attr('string'), 
    avatar: DS.attr('string') 
}); 

http://emberjs.jsbin.com/OxIDiVU/172/edit

而且烬数据的新版本都没有记录在网站上但是,过渡文件应该有助于解释一些细微差别和变化。

https://github.com/emberjs/data/blob/master/TRANSITION.md

+0

非常感谢!它绝对解决了我的问题!感谢Gogu和Deewendra的努力! – TechWisdom

相关问题