Extjs4 MVC, wie bekomme Modell oder eine Ansicht aus einer Controller-Klasse?
Ext.define('DigitalPaper.controller.Documents', {
extend: 'Ext.app.Controller',
views: ['Documents'],
stores: ['Documents'],
models: ['Documents'],
init: function() {
console.log('[OK] Init Controller: Documents');
}
});
Was ist die Funktion zu bekommen, Modell oder View dieses Controllers?
Ich habe versucht
Ext.getModel('Documents');
this.getModel('Documents');
this.getModel();
this.getDocumentsModel();
Alle schlägt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lösung Gefunden:
In der Steuerung ist es möglich, die Referenz auf den View:
So können Sie die Ansicht mit diesem:
Extern Controller sind ziemlich seltsam, dass eine einzelne Instanz von einem bestimmten controller, egal, wie viele zugehörige view-Instanzen, die Sie haben könnten. In den meisten MVC oder MVP-Systeme gibt es eine controller-Instanz-per-view-Instanz.
Wenn Sie planen, mehrere view-Instanzen, dann sollten Sie nicht halten Referenzen auf views in den controller.
Vielleicht möchten Sie sich in Geschickter MVC-Erweiterung für ExtJs, der eine controller-Instanz-per-view-Instanz (plus dependency injection):
http://deftjs.org/
Sowieso, controller.getView() liefert eine Referenz auf die view-KLASSE, nicht ein Objekt, Instanz. Gleiche mit getModel(). getStore() zurückgegeben wird eine Instanz speichern.
In Ihrem controller, können Sie etwas wie das hier tun:
Ich würde auch empfehlen, die Benennung des Modells im singular. Es ist nicht die Dokumente. Es ist ein Dokument.
Sollte dies funktionieren:
});
Diese Methoden werden erstellt, indem eine Methode in der Ext-controller schafft, dass die Getter.
http://docs.sencha.com/ext-js/4-0/source/Controller.html#Ext-app-Controller
Hier ist, was diese Methode sieht wie folgt aus:
getModel() und getView() nicht wieder die model /Blick auf die controller - Sie kehren Instanzen dieser in der app (und wenn keine vorhanden sind, werden Sie instanziert werden).
Können Sie einfach verwenden Sie diese Option, um die Ansicht /Modell-Namen:
Ich bin nicht sicher, wo Sie mit Ihrem wird ( dh, diese.getModel('Details') ), aber diese sollten ordnungsgemäß zurückgeben, die eine Instanz des Modells (der Konstruktor ist der einzige Ort, Sie haben möglicherweise Probleme verweisen auf diese).