【发布时间】:2015-09-18 20:35:03
【问题描述】:
我想将数据推送到我的模型。这个模型有一个叫做内容的对象数组。问题是即使我使用 pushObject 方法,Ember 也不会将其解析为 Ember 对象。这导致我的模板没有更新。这是请求的代码:
Ember.$.ajax({
type: 'POST',
url: 'conversations/' + self.get('model').id + '/send',
dataType: 'json',
data: new_message,
success: function(data){
self.get('model.content.sentMessages').pushObject(data);
},
error: function(){
}
});
如何将 JSON 响应解析为 ember 对象?
编辑:我正在使用 ember-data
App.Conversation = DS.Model.extend({
status: DS.attr(),
readStatus: DS.attr(),
timeAgoElement: DS.attr(),
lastMessage: DS.attr(),
customer: DS.belongsTo('customer'),
user: DS.belongsTo('user'),
content: DS.attr(),
lastReopenedSlug: DS.attr(),
lastReopened: function(){
return this.get('lastReopenedSlug') === this.get('id');
}.property('lastReopenedSlug', 'id'),
sortedContent: function(){
if(this.get('content')){
var content = this.get('content');
return Ember.ArrayProxy.createWithMixins(Ember.SortableMixin, {
sortProperties: ['createdAt'],
sortAscending: true,
content: content.sentMessages.concat(content.receivedMessages).concat(content.notes).concat(content.assignations).concat(content.statuses)
});
}
}.property('content'),
timeAgoFormated: function(){
return moment(this.get('timeAgoElement')).fromNow();
}.property('timeAgoElement'),
lastMessageFormated: function(){
var lastMessage = this.get('lastMessage');
if(nthOccurrence(lastMessage, ' ', 3) != -1){
return lastMessage.substr(0, nthOccurrence(lastMessage, ' ', 3)) + "...";
}
return lastMessage;
}.property('lastMessage')
});
返回给模板的数据是 sortedContent,这取决于内容。我注意到我的新数据被推送到我想要的内容中,但是以 JSON 格式而不是 Ember 对象格式,这会阻止我的模板更新。
有用的模板渲染:
{{#each elem in model.sortedContent}}
--display x--
{{/each}}
【问题讨论】:
-
您可以发布您的模板以及您的退货数据是什么样的吗?澄清一下,你真的在使用 Ember Data 吗?如果是这样,请发布您的模型关系。 pushObject 不解析数据,它实际上只是将对象推送到数组中。您可能想先执行 Ember.Object.create(data) (或使用您用于 sentMessages 模型的任何构造函数)。
-
sentMessage 不是模型,它与对话的模型内容相关联。我看不出有任何理由为它创建模型。
标签: ember.js ember-data