Antwort
 
Themen-Optionen Thema durchsuchen
Alt 19.02.2008, 11:21 Nach oben    #1
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
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
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 25.02.2008, 11:45 Nach oben    #2
Patrick Freitag
 
Registriert seit: 17.08.2005
Beiträge: 127
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();
Neq' ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 25.02.2008, 14:40 Nach oben    #3
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
Standard

Vielen Dank!

Ich werde mir das demnächst anschauen.

Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Zelleninhalte dynamisch als Spalten-Namen zurückgeben? Basti Datenbanken 3 13.03.2007 12:38
Classen dynamisch laden dtdesign PHP-Programmierung 6 10.07.2006 17:21
Zugriff auf Graphics Objekte eines Applets lokl Desktop-Applikationen und Grafik 0 11.08.2005 10:28
Erzeugung meherer JFrame Objekte - Problem mit Zugriff simone.kirstein Desktop-Applikationen und Grafik 2 28.02.2005 09:07


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:09 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

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