ExtJS MVC принадлежит к / имеет много доступа к детям
Я использую ExtJS 4.0.7 с функциями ExtJS MVC. У меня есть родительская модель, которая hasMany
дети, которые belongsTo
родитель.
Как правильно получить доступ к детям? Если я пройду parent.children().data.items[0].data
(в отличие от parent.data.children[0]
), есть нежелательная собственность MyApp.model.parent_id
, Я также заметил различия между тем, как хранятся даты.
Во-первых, вот определение родителя. Таким образом, у родителя будет много детей.
Ext.define('MyApp.model.Parent', {
extend : 'Ext.data.Model',
fields : [ 'id' ],
hasMany : [ {
model : 'MyApp.model.Child',
name : 'children'
}],
proxy : {
type : 'direct',
api : {
create : Parents.create,
read : Parents.read,
update : Parents.update,
destroy : Parents.destroy
}
}
});
И каждый ребенок будет принадлежать родителю.
Ext.define('MyApp.model.Child', {
extend : 'Ext.data.Model',
fields : [ 'id', {
name : 'validFrom',
type : 'date',
dateFormat : 'time'
} ],
belongsTo : 'Parent'
});
Я загружаю родителя в свой контроллер:
this.getParentModel().load(id, {
scope : this,
success : function(parent) {
// the party looks good here when logged to console
console.log(parent);
this.updateStore(parent);
}
});
При проверке родителя в консоли, это то, что я нахожу:
console.log(parent.data.children[0])
:
Консольный вывод:
Object
id: 3
validFrom: -1767225600000
__proto__: Object
console.log(parent.children().data.items[0].data)
:
Консольный вывод:
Object
id: 3
MyApp.model.parent_id: 209 // why is that here?
validFrom: Thu Jan 01 1914 01:00:00 GMT+0100 (Central European Standard Time)
__proto__: Object
1 ответ
Если я правильно понимаю, я думаю, что вы хотите:
var someRecordId = 'idProperty';
var record = Ext.getStore('Parent').getById(someRecordId);
// this returns all hasMany for the name of of the property i.e. name: 'child'
record.child();
Это вернет вам все данные об элементах (на основе определения модели) в Child для родительской записи. Он должен включать только эти поля в определение модели Child. Таким образом parent_id не будет включен. Если вы пытаетесь получить все записи для Child, вы просто получаете их так же, как и в любом другом магазине.