Model EmberJS:未使用数据初始化模型(ember数据)
我试图从后端加载一些JSON并启动一个模型。到目前为止,我认为我得到了模型,但没有设置其属性:( 以下是我的测试代码:Model EmberJS:未使用数据初始化模型(ember数据),model,ember.js,ember-data,Model,Ember.js,Ember Data,我试图从后端加载一些JSON并启动一个模型。到目前为止,我认为我得到了模型,但没有设置其属性:( 以下是我的测试代码: window.App = Ember.Application.create(); App.Router.map(function() { this.resource('person', { path: '/people/:person_id' }); }); App.Adapter = DS.RESTAdapter.extend({ namespace: '~u
window.App = Ember.Application.create();
App.Router.map(function() {
this.resource('person', { path: '/people/:person_id' });
});
App.Adapter = DS.RESTAdapter.extend({
namespace: '~user1/embertest'
});
App.Store = DS.Store.extend({
revision: 11,
adapter: App.Adapter,
});
var attr = DS.attr;
App.Person = DS.Model.extend({
firstName: attr('string'),
lastName: attr('string')
});
App.PersonRoute = Ember.Route.extend({
model: function(params) {
return App.Person.find(params) ;
}
});
App.PersonController = Ember.Controller.extend({
contentDidChange: function() {
debugger ;
console.info(this.get('content'));
}.observes('content.isLoaded')
}) ;
数据从json文件加载,该文件仅包含:
{"persons": {"firstName": "Jeff","lastName": "Atwood"}}
现在,通过url localhost/~user/embertest.html#people/10,我看到数据被加载,控制器方法contentDidChange被调用
this.content.get("firstName") ; // or this.get("content").get("firstName")
它返回“未定义”。这里出了什么问题
最后,以下是我的模板,它们位于:
<script type="text/x-handlebars" data-template-name="person">
Person: {{content.firstName}}
</script>
<script type="text/x-handlebars" data-template-name="application">
{{outlet}}
</script>
人员:{{content.firstName}
{{outlet}}
干杯尝试删除PersonRoute,默认的模型挂钩应该可以。我认为这里发生的是App.Person.find(params)发送一个findQuery()而不是find(id)。我认为JSON不正确
{"persons": {"firstName": "Jeff","lastName": "Atwood"}}
执行App.person.find(params.person\u id)时,根元素应为“person”
我也不认为您需要PersonRoute,因为默认情况下,该路由应执行以下操作:
App.PersonRoute = Ember.Route.extend({
model: function(params) {
return App.Person.find(params.person_id) ;
}
});
当动态路径段中有“*\u id”时。JSON根目录应该是“person”而不是“persons”如果我这样做,我会在控制台中得到以下错误消息:错误:断言失败:您的服务器返回了一个带有密钥person的哈希,但您没有ITI的映射如果我删除该路由,我会得到大致相同的结果,除了json的根元素必须是“person”,并且this.content.get(“firstName”)现在返回null而不是null“undefined”我想你在返回的json中也必须有一个id。我只是意识到你的PersonController是一个控制器,而不是一个ObjectController。也要改变它。注意,在这里很难有效地帮助你。一个完整的例子会更有用:)(JSFIDLE或jsbin)如何在JSIDdle中伪造url?在这里,我创建了一个JSIDdle,但由于url不起作用:一些pbs使用JSIDdle。我还有一个问题,在json中,属性必须是模型的未评分版本。例如,它应该是first_name:“jeff”我已经删除了它,并将“persons”更改为“person”“。请参阅我在另一篇帖子上的评论。结果仍然是一个空模型!
App.PersonRoute = Ember.Route.extend({
model: function(params) {
return App.Person.find(params.person_id) ;
}
});