+ Antworten
Ergebnis 1 bis 3 von 3

Thema: Objekte dynamisch erweitern

  1. #1
    Erfahrener Benutzer
    Registriert seit
    04.01.2006
    Beiträge
    964

    Standard Objekte dynamisch erweitern

    Hi.

    Wie kann ich denn am Geschicktesten an folgende Aufgabe rangehen:

    Ich hab einen Datensatz für eine Komponente (quasi ein Panel in einem Editor, ein Formular, über das man an einer bestimmten Stelle im Text ein Bild, eine Galerie, einen Seminartermin etc. eingeben kann). dieser Datensatz enthält die ID der Komponente, die Version, sowie den Typ und Optionen (die erstmal unwichtig sind).

    Jede Komponente wird erstmal auf die gleiche Weise gebaut und soll nun einen Bereich erhalten, in dem es Inhalte packen kann und eine Toolbar, in die über eine Schnittstelle Icons mit Funktionen gepflanzt werden können soll.

    Die Inhalte des Formulars sollen entweder dynamisch nachgeladen werden (anhand von ID und Version) oder auch im Datensatz enthalten sein. Das HTML und JavaScript für die Komponente (letztlich das Formular) sollen dynamisch – je nach Komponenten-Typ nachgeladen werden.

    wie kann ich nun in JavaScript so ein Komponenten-Objekt bauen, das von der konkreten Komponente (Bildergalerie, Tag-Cloud, Videoplayer etc.) erweitert wird?

    Ich benutze das Framework jQuery.

    Ich hab einfach keinen Ansatz, wie ich da ran soll. In PHP würde das vielleicht so aussehen:

    PHP-Code:

    $aData 
    = array(
        array(
    'id' => 42'type' => 'MyComponentClass');
    );

    foreach(
    $aData as $aComponentData) {

        
    $sClass $aComponentData['type'];

        
    $Component = new $sClass($aComponent['id']);
    }

    class 
    MyComponentClass extends Component
    {
        protected function 
    init()
        {
            
    $BoldIcon $this->createIcon('bold', array($this'doBold'false));
            
    $this->addToolbarIcon($BoldIcon);
        }

        protected function 
    doBold()
        {
            
    $this->Selection->replace('<strong>' $this->Selection->get() . '</strong>');
        }
    }

    abstract class 
    Component
    {
        protected 
    $iId;

        public function 
    __construct($iId)
        {
            
    $this->iId $iId,
            
    $this->loadData($iId);
            
    $this->init();
        }

        protected function 
    loadData($iId)
        {
            
    // ...
        
    }

        protected function 
    createIcon($sId$sImage$mCallback$bState true)
        {
            return new 
    Icon(...);
        }

        protected function 
    addToolbarIcon(Icon $Icon)
        {
            
    // ...
        
    }

    …irgendwie so halt.

    Wie löst man sowas in JavaScript?

    Basti

  2. #2
    Patrick Freitag
    Registriert seit
    17.08.2005
    Beiträge
    151

    Standard

    Hi Basti,

    ich hab hier mal etwas zurechtgehackt. Ich weiß nicht ob es eine andere und bessere Lösung für das Problem gibt, aber vielleicht ist es das was du brauchst.

    Code:
    function MyComponentClass() {
                    
                    this.init = function() {
                        alert("Function init() was called...");
                    }                
                    this.doBold = function() {
                        alert("Function doBold() was called...");
                    }    
                    
                }
                
                function Component(id) {
                    
                    var protectedId = id;
                    alert("Construcor was called and protectedId was set to " + protectedId);
                                    
                    this.loadData = function() {
                        alert("Function loadData() was called...");
                    }
                    this.createIcon = function() {
                        alert("Function createIcon() was called...");
                    }                                
                }
                
                var class= "MyComponentClass";
                var att = "42";
                
                eval(class + ".prototype = new Component('"+att+"');");
                eval("var obj = new "+class+"();");    
                obj.init();        
                obj.loadData();
                obj.createIcon();
                obj.doBold();
    

  3. #3
    Erfahrener Benutzer
    Registriert seit
    04.01.2006
    Beiträge
    964

    Standard

    Vielen Dank!

    Ich werde mir das demnächst anschauen.

    Basti

+ Antworten

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 13.03.2007, 12:38
  2. Classen dynamisch laden
    Von dtdesign im Forum PHP-Programmierung
    Antworten: 6
    Letzter Beitrag: 10.07.2006, 17:21
  3. Erzeugung meherer JFrame Objekte - Problem mit Zugriff
    Von simone.kirstein im Forum Desktop-Applikationen und Grafik
    Antworten: 2
    Letzter Beitrag: 28.02.2005, 09:07

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein

Impressum · Tutorials · Nutzungsbedingungen · thematisch sortierte Linklisten · Spendenaufruf · Team · Partnerprojekte

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48