我正在尝试与Ember.js合作 我可以通过路由或控制器将我的数据模型公开为json吗?
我在商店中保存了这样的对象:
this.store.createRecord('Person', {
id: 1,
name: this.get('name'),
email: this.get('email')
});
我想将这些数据从路径或控制器公开为JSON对象。我不想使用任何观点。
可以这样做吗? 谢谢你的帮助
EDIT 我的路线是:
App.ResultRoute = Ember.Route.extend({
model: function() {
return this.store.find('person', 1);
}
});
有' 1'因为我只想要这个记录。 通过这种方式,它可以工作,我在视图中看到Person对象的{{name}}和{{email}。 我想只看到JSON,我试着按照你的建议来做:
App.ResultRoute = Ember.Route.extend({
afterModel: function (model) {
model.get('content').forEach(function (item) {
console.log(item.get('content'));
});
}
});
但我收到此错误: 未捕获错误:断言失败:错误:传递了更多上下文对象,而不是路径的动态细分:错误
我的错误是什么?感谢
答案 0 :(得分:1)
我这样做的方式是,我会在我的模型中有一个api,它会将一个普通的json对象返回给任何要求它的人。因此Person
模型将有一个getPersonDetails
方法,它将隐藏所有内部细节,包括属性和关联以及其他任何内容,并返回调用它的person
对象的状态。 。
因此,例如,如果您想要显示人员或某事物的表格,您可以执行createRecord,并只询问新创建的person
对象的详细信息。
答案 1 :(得分:0)
从本指南的开头部分开始。 http://emberjs.com/guides/routing/specifying-a-routes-model/它将向您展示如何为路线指定模型。
然后,阅读控制器上的整个指南:http://emberjs.com/guides/controllers/
通常,您可以使用以下命令从路径的model
挂钩访问该数据:
this.store.find('person') // All records
如果你想以JSON的身份访问第一个对象,你可以这样做:
var person_JSON = this.store.find('person').then(function (persons) {
//The persons records are now available so you can do whatever you want with them
console.log(persons.objectAt(0).get('content'));
});
你也可以遍历所有记录并去除内容以生成原始json,而不需要Ember包装......只是取决于你真正需要做什么。
但实际上放置这个的最佳位置是路线的afterModel
钩子。你不会做出承诺,因为Ember会为你处理这个:
afterModel: function (model) {
model.get('content').forEach(function (item) {
console.log(item.get('content'));
});
}
希望有所帮助。
编辑:由于您有一条记录,请尝试:
afterModel: function (model) {
console.log(model.get('content'));
}