Testuję extjs 4 i natknąłem się na coś, nie mogę się domyślić.extjs 4 skojarzenia klasy XTemplate
Mam prosty obiekt Stowarzyszenie: Snapshot - hasMany -> Model
Teraz staram się używać XTemplate pokazać tę zależność w widoku komponentu, więc mam mój XTemplate wygląda tak:
Ext.create('Ext.XTemplate',
'<tpl for=".">',
'<div class="snapshot" id="{id}">',
'<h1>{snapshot}</h1>',
'<p><span class="label">Created: </span>{dateString}</p>',
'<p><span class="label">Models</span></p>',
'<tpl for="models">',
'<p>{name} - {description}</p>',
'</tpl>',
'</div>',
'</tpl>',
'<div class="x-clear bottompad"></div>'
);
A moja odpowiedź JSON wygląda następująco (pokazano tylko 'migawkę' node):
{
"id": 1,
"snapshot": "Snapshot 1",
"created": 1305806847000,
"models": [
{
"id": 1,
"name": "ABC",
"description": "A B C"
}, {
"id": 111,
"name": "ABCDD",
"description": "A B C XCXC"
}
]
}
As ExtJS 4 w wprowadza koncepcję Modelu I stworzyło modele dla Migawek i Modelu oraz stworzyło powiązanie zgodnie z dokumentami API.
Snapshot model:
Ext.define('Snapshot', {
extend: 'Ext.data.Model',
fields: [
{name: 'id', type: 'int'},
'snapshot',
{name: 'created',type: 'date', dateFormat: 'time' }
],
associations:[
{type: 'hasMany', model: 'Model', name: 'models'}
],
idProperty: 'id'
});
Modelarski; P
Ext.define('Model', {
extend: 'Ext.data.Model',
belongsTo: 'Snapshot',
fields: [
{ name: 'id', type: 'int' },
{ name: 'snapshot_id', type: 'int' },
'name',
'description'
],
idProperty: 'id'
});
I to jest mój problem polega - Kiedy ja używam takiej konfiguracji jest wyświetlany żaden z moich modeli, gdy XTemplate jest wykonywany , jednak jeśli usunę asocjacje z modelu migawki i po prostu dodaję inne pole o nazwie "modele", to działa poprawnie.
Jaka jest najlepsza praktyka, aby poprawnie wyświetlać listę modeli podczas korzystania z asocjacji? Czy w tym celu muszę użyć szablonów zagnieżdżonych i niestandardowych funkcji?
Jest to rodzaj strzelania we własnej stopy, lubię pojęcia ORM w Sencha , większość języków ma już jakiś rodzaj ORM i widzę, że ta funkcja jest solidnym blokiem ich koncepcji MVC, ale miałem szczerą nadzieję, że to będzie działać od podstaw. Może następne wydanie przyniesie tę funkcjonalność. Na razie myślę, że będę trzymał się koncepcji modeli bez skojarzeń, ponieważ będzie to najmniej bolesny model przejściowy dla mojego projektu. – Greg
Zgadzam się. Ogólnie rzecz biorąc, wiele dobrych rzeczy w ExtJS4, ale nie udało się marnie na aspekt jakości. (nawet dokumentacja jest niekompletna i wiele artykułów zatrzymuje się w połowie podczas tłumaczenia). Patrząc na forum sencha, "światła są włączone, ale nikt nie jest w domu". W każdym razie, jeśli ta odpowiedź ci pomogła, rozważ dodanie lub zaakceptowanie –
Warto zauważyć w przyszłych przeglądarkach, że metoda prepareData (zgodnie z 4.1 beta2) teraz używa metody getAssociatedData i stosuje je do zwróconego obiektu danych. – Stuart