Sto utilizzando Requirejs
per caricare JavaScript nella nostra app Web. Il problema è che sto ottenendo un oggetto undefined
passato a un modulo che, se usato in altri moduli, viene istanziato perfettamente.Oggetto non definito passato tramite Requirejs
OK, ecco il setup. Il mio file main.js
che requirejs eseguito all'avvio:
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();
});
Un sacco di config è stato spogliato da solo i file principali di questo problema.
Ecco Demographics.js
:
define(["ko", "templates", "complaints", "globals", "underscore"], function (ko, templates, complaints, globals) {
// Stuff removed.
return {
View: view
};
});
e 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
};
});
Il problema è questo - nel Complaints.js
parametro demographics
passato attraverso il define
config è undefined
. La disconnessione della console mi dice che "demographics === undefined" è true
.
Tuttavia, quando il file main.js viene eseguito, il parametro demografico passato non è indefinito, è, come previsto, un oggetto istanziato.
Ora sono bloccato poiché non riesco a capire perché in complaints.js
tale variabile demografica non è definita. Qualcuno può individuare quello che mi manca, per favore?
Ah, esattamente quello che sospettavo, ma davvero non pensavo che questo potesse accadere (sono un vero novizio con questa roba AMD/requirejs :) Il mio piano d'azione è creare un altro modulo che ospiterà il codice per entrambi i dati demografici e le lamentele. Ciò significa che questo nuovo modulo verrà utilizzato per chiamare il codice dagli altri due file. Grazie per aver confermato i miei pensieri. Farò un tentativo quando avrò il tempo. –