2017-08-22 2 views
0

Ich versuche, dynamische Formulare zu erstellen (schließlich mit AJAX-Proxy, um den JSON von dem Server zu ExtJS übergeben, um die Formulardefinition zu machen) mit ExtJS 6.2.1 und der Admin-Dashboard-Vorlage.Dynamische Formulare mit Treestore

In meinem application.js, in der launch Funktion, habe ich eine einfache Form ohne Kontrollen:

var form = Ext.create('Ext.form.Panel', { 
      title: 'Testing 1, 2, 3...', 
      alias: 'widget.test-form', 
      bodyPadding: 5, 
      width: 350, 

      layout: 'anchor', 
      defaults: { 
       anchor: '100%' 
      } 

     }); 

Ich möchte nicht diesen überall machen, sondern, um es zu meinen Treestor Menü zugänglich machen , wie:

{ 
    text: 'Dynamic Test', 
    iconCls: 'x-fa fa-check', 
    viewType: 'test-form', 
    leaf: true 
} 

Alles toll kompiliert, wenn ich einen Build, aber dann, wenn ich versuche, die Form von meinem Menü aufzurufen, erhalte ich den Fehler 404:

[Error] Failed to load resource: the server responded with a status of 404 (Not Found) (test-form.js, line 0) 
Error: [Ext.create] Unrecognized class name/alias: widget.test-form 

Wie kann ich den Treestore dazu bringen, mein beim Start erstelltes Formular zu sehen? Ich habe auch einen xtype anstelle eines Alias ​​mit einem Widget versucht, aber im Grunde den gleichen Fehler. Allgemeiner: Wie stelle ich die form Variable, die auf launch erstellt wurde, der App zur Verfügung, damit ich sie wie gewünscht aufrufen kann?

** EDIT **

Ich habe auch versucht, in einer Form, Panel Definition Zugabe zu meiner App launch Funktion:

Ext.define('Admin.form.TestDyno', { 
      extend: 'Ext.panel.Panel', 
      alias: 'widget.test-form', 

      title: 'Testing 1, 2, 3...', 
      bodyPadding: 5, 
      width: 350, 

      layout: 'anchor', 
      defaults: { 
       anchor: '100%' 
      } 

     }); 

aber, wenn ich die app laufen, bekomme ich eine Fehlermeldung, dass:

log — Util.js:881[E] [Loader] The following classes failed to load: 
log — Util.js:881[E] [Loader] Admin.form.TestDyno from classic/src/Application.js 

Muss ich die Definition meines Formulars in einer Datei vornehmen und dann die Komponenten beim Start der App initialisieren? Ich könnte das sicherlich tun, aber es wäre schön, die Formulardefinition in der launch machen zu können. Ich denke, dass etwas wie dieses launch-function-(Application)-and-set-parameters-on-the-component ist mehr von, wie man das umsetzt, was ich benötige.

Antwort

1

Damit der Widget-Typ erkannt wird, erstellen Sie keine neue Formularinstanz.

Sie müssen eine neue abgeleitete Klasse mit Ext.define definieren.

+0

Ich versuchte das in meiner Anwendung 'starten,' aber es hat nicht funktioniert. Ich werde später Details veröffentlichen. –

+0

Siehe oben Bearbeiten. –

+0

Ich werde einen alternativen Ansatz für dieses Problem nehmen. Anstatt die Formularkomponenten dynamisch zu generieren, werde ich die Generierung der ExtJS-Dateien für die Formulare ausführen. Das Problem ist, dass wir die Struktur mehrerer komplizierter Formulare als Adjazenzlisten zur Verwendung bei der Revisionskontrolle und der einfachen Erstellung von Daten im Handumdrehen gespeichert haben. Ich sollte in der Lage sein, das zu nehmen und es zu serialisieren, um die Dateien zu machen. Es wird etwas manuelle Bearbeitung geben, aber es ist ein viel einfacherer erster Schritt in diesem Prozess. Also, während Ihre Antwort keine Lösung bot, brachte es mich zumindest zum Nachdenken. –

Verwandte Themen