私はhasManyとbelongsToの使い方を理解するのに苦労しています。私の理解はhasManyは1:多くの関係であり、belongsToはmany:1の関係です。脇に:これは、hasMany関係がある場合、その子モデルにbelongsToが必要であることを意味しますか?私はそれについていくつかの記事を読んだ:ExtJS 4:hasManyとbelongsToを理解する
- Ext.data.reader.Readerページのネストされたデータを読み込んでいます。しかし
- hasMany vs belongsTo
- ExtJS 4: Models with Associations and Stores
ExtJS Tutorials - HasMany article
var data = {
"config": {
"name": "blah",
"id": 1,
"someconfig": [{
"name": "Services", "tabs": [{
"id": 0, "name": "Details", "layout": "hbox"
}, {
"id": 1, "name": "Sources", "layout": "hbox"
}, {
"id": 2, "name": "Paths", "layout": "hbox"
}, {
"id": 3, "name": "Ports", "layout": "hbox"
}, {
"id": 4, "name": "Levels", "layout": "hbox"
}, {
"id": 5, "name": "Notes", "layout": "hbox"
}]
}, {
"name": "Services2", "tabs": [{}]
}]
}
};
私は設定のためのモデルを作成します。
Ext.define('Config', {
extend: 'Ext.data.Model',
fields: ['name'],
hasMany: [{
name: 'someconfig',
model: 'Someconfig',
associationKey: 'someconfig'
}],
proxy: {
type: 'memory',
data: data,
reader: {
type: 'json',
root: 'config'
}
}
});
データで、someconfigは、オブジェクトの配列であるため、だから、コンフィグが多くSomeconfigsを持つことができます。ここにSomeconfigモデルがあります:
Ext.define('Someconfig', {
extend: 'Ext.data.Model',
fields: [
'name'
],
hasMany: [{
name: 'tabs',
model: 'Tabs',
associationKey: 'tabs'
}]
});
Ok、同じ取引です。 Someconfigは、データ内でタブがオブジェクトの配列であるため、多くのタブを持つことができます。ここにTabsモデルがあります:
Ext.define('Tabs', {
extend: 'Ext.data.Model',
fields: [
'id',
'name',
'layout'
],
belongsTo: [{
name: 'tabs',
model: 'Someconfig',
associationKey: 'tabs'
}]
});
ここで、私はこのプロパティを使いこなしていたので、belongsToがそこにあります。それにもかかわらず、Someconfigからタブにアクセスすることはできませんが、ConfigからSomeconfigにアクセスできます。 jsFiddle
Config.load(1, {
success: function(record, operation) {
console.log(record.get('name')); // works
console.log(record.someconfig().getCount()); // works, gives me 2
console.log(record.someconfig().data.items[0].data); // only prints out name and config_id
// console.log(record.someconfig().tabs()); // doesn't exist
}
});
:このコードを見てみましょうdemo
私が知りたいのは何ですが、私は、someconfig()からタブ()にアクセスできないようにする必要がありまたは私は関係を誤解していますか?それが前者の場合、コードを修正するにはどうすればよいですか?
クロス投稿Sencha forumsから投稿しました。
あなたはまさに正しいのですが、それは私が昨日やって来た結論です。ありがとう! – incutonez
これは興味深いことですが、 'someconfig'は' record'のデータには表示されません...私は 'someconfig'メソッドにアクセスすることしかできません。これは私には意味をなさない... 'config'モデルhasMany' someconfig'が 'config'にモデルの配列として現れるはずです! – incutonez