EmberJS:在获取模型后获取模型的单个属性
EmberJS: Fetch a Single Attribute of a Model After the Model is Fetched
我有两个模型,一个User
和许多Messages
:
App.Router.map(function() {
this.resource('user', { path: ':user_id' }, function () {
this.route('profile', { path: 'profile' });
this.resource('messages');
});
});
App.User = DS.Model.extend({
displayName: DS.attr('string'),
email: DS.attr('string'),
firstName: DS.attr('string'),
lastName: DS.attr('string'),
location: DS.attr('string'),
messages: DS.hasMany('message')
});
App.Message = DS.Model.extend({
user: DS.belongsTo('user'),
createdAt: DS.attr('date'),
updatedAt: DS.attr('date'),
fullText: DS.attr('string'),
subject: DS.attr('string'),
recipients: DS.attr('string')
});
当前,当我执行用户搜索时,我必须加载整个模型,包括与用户关联的所有消息。
我想做的是:
- 检索用户
- 检索用户的消息(当用户被选中时)
我在烬中找不到一个简单的方法来做到这一点。我最好的猜测是呼叫路由中的find
,可能:
App.UserRoute = Ember.Route.extend({
model: function (params) {
var user = this.store.find('user', params.user_id);
this.store.find('message', { user: 3 });
return user;
}
}
但是这会生成url /messages?user_id=3
。我想要的是像/users/3/messages
这样的东西。
如何查询与用户关联的消息?
我认为{ async: true }
是你正在寻找的。有关它是什么以及如何使用它的一些讨论,请参阅http://discuss.emberjs.com/t/what-is-an-async-relationship-async-true-vs-async-false/4107。
你可能想要这样设置你的模型:
App.User = DS.Model.extend({
displayName: DS.attr('string'),
email: DS.attr('string'),
firstName: DS.attr('string'),
lastName: DS.attr('string'),
location: DS.attr('string'),
messages: DS.hasMany('message', { async: true } )
});
然后,当您的Handlebars模板请求{{myUser.messages}}
(或{{myUser.messages.someProperty}}
)时,Ember Data将查看User
模型,并注意消息id(例如,5,10和12)。然后,它将在本地数据存储中查找消息5、10和12。如果有,就会显示出来。如果它们不存在,那么它将使用您为Message
定义的适配器(或者如果没有定义默认的RESTAdapter
适配器)使用HTTP GET获取它们。
我相信它会对每个id发出一个请求(而不是对所有id发出一个请求),但这是我不能100%确定的事情。
相关文章:
- 如何使用backbone.js从集合中获取模型名称
- Django 使用 JSON 获取模型方法的值
- 在Waterline中动态定义和获取模型
- 在Backbone中通过CID设置和获取模型
- 从Ember视图获取模型属性
- 在不同的模型中获取模型id会在主干中创建表单
- 余烬需要刷新浏览器才能获取模型数据
- Ember.js:使用模型实例的路由获取模型实例的 url 字符串
- 主干视图在模型完成提取后获取模型变量
- 有没有办法轻松获取 C# 模型的 JavaScript 表示形式
- 角度形式 - 从包装器中的字段获取模型
- 如何在获取操作后获取模型属性
- 从 JSON.file 获取模型并将其存储在本地存储主干
- 如何从主干中的嵌套 json 对象获取模型属性
- 在单独的Javascript文件中获取模型值
- 如何获取模型的哪个特定属性已更改?这在Backbone.js中可能吗
- 如何按id从集合中获取模型
- 在ExtJS中从GridPanel获取模型
- 如何获取模型内部的组件引用保存回调函数
- Ember.js渲染模板在其他模板中没有获取模型