Ich verwende Requirejs
, um das JavaScript in unserer Web-App zu laden. Das Problem ist, dass ich ein undefined
Objekt bekomme, das an ein Modul übergeben wird, das, wenn es in anderen Modulen verwendet wird, vollkommen instanziiert wird.Undefiniertes Objekt, das über Requirejs übergeben wird
OK, hier ist das Setup. Meine main.js
Datei, die läuft beim Start requirejs:
require.config({
baseUrl: "/scripts",
paths: {
demographics: "Demographics/demographics",
complaints: "Complaints/complaints",
}
});
require(["templates", "demographics", "complaints", "crossDomain"], function (templates, demographics, complaints) {
"use strict";
console.log("0");
console.log(demographics === undefined);
demographics.View.display();
});
Viele der Config nur auf die Core-Dateien in diesem Problem gestrippt wurde.
Hier Demographics.js
:
define(["ko", "templates", "complaints", "globals", "underscore"], function (ko, templates, complaints, globals) {
// Stuff removed.
return {
View: view
};
});
und Complaints.js
define([
"demographics",
"ko",
"templates",
"complaints",
"visualeffects",
"globals",
"webservice",
"underscore",
"typewatcher",
"imagesloaded"],
function (demographics, ko, templates, complaints, visualeffects, globals, webservice) {
"use strict";
console.log("1");
console.log(demographics === undefined);
return {
View: view
};
});
Das Problem ist dies - in Complaints.js
der demographics
Parameter über die define
Config übergeben undefined
ist. Das Abmelden der Konsole sagt mir, dass "demographics === undefined" true
ist.
Wenn jedoch die main.js-Datei ausgeführt wird, ist der Parameter demographics, der an sie übergeben wird, nicht undefiniert, es handelt sich wie erwartet um ein instanziiertes Objekt.
Jetzt bin ich fest, seit ich nicht sehen kann, warum in complaints.js
diese demografische Variablen undefiniert ist. Kann jemand bitte was ich vermisse?
Ahh, genau das, was ich vermutete, aber wirklich nicht gedacht, dass das passieren könnte (Ich bin ein echter Neuling mit diesem AMD/requires Zeug :) Mein Plan der Aktion ist ein anderes Modul zu erstellen, das den Code für beide hostet die Demographie und die Beschwerden. Das bedeutet, dass dieses neue Modul verwendet wird, um den Code aus den beiden anderen Dateien aufzurufen. Danke für die Bestätigung meiner Gedanken. Werde es versuchen, wenn ich die Zeit habe. –