Ember.js 重新加载后有许多对象消失
我有两种型号,Ember.js 重新加载后有许多对象消失,ember.js,ember-data,Ember.js,Ember Data,我有两种型号,User和Project: App.Project = DS.Model.extend({ name: DS.attr('string'), url: DS.attr('string'), user: DS.belongsTo('user') }); App.User = DS.Model.extend({ name: DS.at
User
和Project
:
App.Project = DS.Model.extend({
name: DS.attr('string'),
url: DS.attr('string'),
user: DS.belongsTo('user')
});
App.User = DS.Model.extend({
name: DS.attr('string'),
projects: DS.hasMany('project')
});
我使用本地存储的余烬数据来存储用户和项目。我在IndexController
中使用AJAX调用填充用户和项目:
'createUser' : function(){
var name = this.get('newUser');
if(!name){
return;
}
var that = this;
Ember.$.getJSON('<apiUrl>).then(function(data){
var user = that.store.createRecord('user', data);
user.save();
that.set('newUser', '');
Ember.$.getJSON(<apiUrl>/projects').then(function(data){
var length = data.length;
for(var i = 0; i < length; i++){
data[i].id = data[i].name;
data[i].user_id = data.id;
var project = that.store.createRecord('project', data[i]);
project.save();
user.get('projects').addObject(project);
}
user.save();
});
});
},
}
DS.JSONSerializer.reopen({
serializeHasMany : function(record, json, relationship) {
var key = relationship.key;
var relationshipType = DS.RelationshipChange.determineRelationshipType(
record.constructor, relationship);
if (relationshipType === 'manyToNone'
|| relationshipType === 'manyToMany'
|| relationshipType === 'manyToOne') {
json[key] = Ember.get(record, key).mapBy('id');
}
}
});
'createUser':函数(){
var name=this.get('newUser');
如果(!name){
回来
}
var=这个;
余烬$.getJSON('
{{else}
没有加载任何项目
{{/每个}}
我是否做了一些不正确的事情,导致项目无法重新加载?我找到了答案。为了使其正常工作,我需要重新打开
JSONSerializer
:
'createUser' : function(){
var name = this.get('newUser');
if(!name){
return;
}
var that = this;
Ember.$.getJSON('<apiUrl>).then(function(data){
var user = that.store.createRecord('user', data);
user.save();
that.set('newUser', '');
Ember.$.getJSON(<apiUrl>/projects').then(function(data){
var length = data.length;
for(var i = 0; i < length; i++){
data[i].id = data[i].name;
data[i].user_id = data.id;
var project = that.store.createRecord('project', data[i]);
project.save();
user.get('projects').addObject(project);
}
user.save();
});
});
},
}
DS.JSONSerializer.reopen({
serializeHasMany : function(record, json, relationship) {
var key = relationship.key;
var relationshipType = DS.RelationshipChange.determineRelationshipType(
record.constructor, relationship);
if (relationshipType === 'manyToNone'
|| relationshipType === 'manyToMany'
|| relationshipType === 'manyToOne') {
json[key] = Ember.get(record, key).mapBy('id');
}
}
});