如何更新加入 belongsTo 的模型?
How to update model joined with belongsTo?
我有咨询模式
export default DS.Model.extend({
records: DS.hasMany('record', { async: true }),
currentUser: DS.belongsTo('user'),
remoteUser: DS.belongsTo('user'),
created_time: DS.attr('number'),
freeMsgCount: function () {
return (this.get('remoteUser.msg_block')-this.get('user_msg_cnt'));
}.property('user_msg_cnt'),
.....
});
和用户模型
export default DS.Model.extend({
name: DS.attr('string'),
.....
});
然后我尝试更新用户模型。我通过 WebSocket
获取 json 数据
socket.on('message', function (jsonObj) {
if (jsonObj.action && jsonObj.action == 'userReload') {
self.store.push('user',jsonObj.userData );
return;
}
}
但咨询模型不知道此更新,因为我在使用来自用户模型 this.get('remoteUser.msg_block')
的数据的咨询模型中有 属性 freeMsgCount
。用户数据已更新我在 Ember 检查器中看到了它。我如何告诉咨询模型更新关系 remoteUser?
您似乎没有在计算 属性 中观察 remoteUser
变化,因此如果 remoteUser
属性 发生变化,它不会被触发。请将 remoteUser.msg_block
添加到计算的 属性 声明中:
export default DS.Model.extend({
# ...
freeMsgCount: function () {
return (this.get('remoteUser.msg_block')-this.get('user_msg_cnt'));
}.property('user_msg_cnt', 'remoteUser.msg_block'),
我有咨询模式
export default DS.Model.extend({
records: DS.hasMany('record', { async: true }),
currentUser: DS.belongsTo('user'),
remoteUser: DS.belongsTo('user'),
created_time: DS.attr('number'),
freeMsgCount: function () {
return (this.get('remoteUser.msg_block')-this.get('user_msg_cnt'));
}.property('user_msg_cnt'),
.....
});
和用户模型
export default DS.Model.extend({
name: DS.attr('string'),
.....
});
然后我尝试更新用户模型。我通过 WebSocket
获取 json 数据socket.on('message', function (jsonObj) {
if (jsonObj.action && jsonObj.action == 'userReload') {
self.store.push('user',jsonObj.userData );
return;
}
}
但咨询模型不知道此更新,因为我在使用来自用户模型 this.get('remoteUser.msg_block')
的数据的咨询模型中有 属性 freeMsgCount
。用户数据已更新我在 Ember 检查器中看到了它。我如何告诉咨询模型更新关系 remoteUser?
您似乎没有在计算 属性 中观察 remoteUser
变化,因此如果 remoteUser
属性 发生变化,它不会被触发。请将 remoteUser.msg_block
添加到计算的 属性 声明中:
export default DS.Model.extend({
# ...
freeMsgCount: function () {
return (this.get('remoteUser.msg_block')-this.get('user_msg_cnt'));
}.property('user_msg_cnt', 'remoteUser.msg_block'),