2016-07-29 3 views
0

Ich habe ein sehr einfaches Modell und Controller. Aber wenn ich das Skript ausführen, bekomme ich unter Fehler: Uncaught TypeError: dropdownModel is not a constructorFehler: .. ist kein Konstruktor in Backbone

Modell:

define(['backbone'], function(Backbone) { 
    var dropdownModel = Backbone.Model.extend(); 
    return { 
     dropdownModel: dropdownModel 
    }; 
}); 

Controller:

define(['backbone', 'dropdownModel'], 
    function(Backbone, dropdownModel) 
    { 
    var dropdownModel = new dropdownModel({}); 
}); 

Erfordern Modul:

requirejs.config({ 
    baseUrl: "../Scripts", 
    paths: { 
     requireLib: "../Scripts/require", 
     dropdownModel: "../Models/dropdownModel", 
     firstDashboardController: "../Controller/firstDashboardController", 
    } 
}); 
+1

sollten Sie melden, was 'dropdownModel' ist. Es ist wahrscheinlich ein Objekt, und Sie müssen wahrscheinlich 'neues dropdownModel.dropdownModel()' oder einfach 'dropdownModel zurückgeben' in Ihrer Modelldatei –

+0

Sie hatten Recht. Es funktionierte. Kannst du das bitte als Antwort verwenden, damit es anderen hilft? Also, heißt das, wenn ich einfach var 'x = new x();' Ich erstelle im Grunde die Instanz der ganzen Datei, die keinen Sinn ergibt. aber wenn ich 'var x = new x.x()' mache, dann rufe ich tatsächlich die Klasse 'x' auf. Kannst du deine Antwort auch etwas erklären? Vielen Dank! – Unbreakable

+1

'new' kann nur für Funktionen oder Klassen aufgerufen werden. In diesem Beispiel versuchen Sie, ein Objekt als "neu" zu bezeichnen. 'dropdownModel.dropdownModel' ist nur ein Verweis auf die eigentliche Funktion (das erweiterte Modell, das Sie erstellt haben). –

Antwort

1

Sie exportieren ein Objekt anstelle des Modells selbst auf dieser Linie:

return { 
    dropdownModel: dropdownModel 
}; 

Sie wahrscheinlich dies nur tun wollen:

return dropdownModel;