Dojo.requireIf does not allow local variables

I am trying to use dojo.require(If)a local variable to dynamically load a module on a page based on a condition.

// note: dojo v1.4
djConfig = {
  debugAtAllCosts: true
};

Example 1 (does not work) :

(function () {
  var nameOfClass = "Two";
  dojo.require ("my.namespace." + nameOfClass);
  dojo.addOnLoad (function () {
    var oneOrTwo = new my.namespace [nameOfClass] ();
  });
} ());

Error: ReferenceError: nameOfClass not defined.

Example 2 (does not work) :

(function () {
  var nameOfClass = "Two";
  dojo.requireIf (nameOfClass == "One", "my.namespace.One");
  dojo.requireIf (nameOfClass == "Two", "my.namespace.Two");
  dojo.addOnLoad (function () {
    var oneOrTwo = new my.namespace [nameOfClass] ();
  });
} ());

Error: ReferenceError: nameOfClass not defined.

Example 3 (works) :

(function () {
  window.nameOfClass = "Two";
  dojo.requireIf(window.nameOfClass == "One", "my.namespace.One");
  dojo.requireIf(window.nameOfClass == "Two", "my.namespace.Two");
  dojo.addOnLoad(function() {
    var oneOrTwo = new my.namespace[nameOfClass]();
  });
}());

- , requireIf . , - ?


1:

, (@Maine, @jrburke), debugAtAllCosts? ( / xd) - , ?

, , , ?

dojo.require(s). loader_xd (, , ) , , /, ?

2:

1 , .

0
2

, requireIf .

grep Dojo source requireIf, , (loader_xd.js):

var depRegExp = /dojo.(require|requireIf|provide|requireAfterIf|platformRequire|requireLocalization)\s*\(([\w\W]*?)\)/mg;

eval , .

+1

, Main, XD Dojo. debugAtAllCosts: true XD Loader. Dojo debugAtAllCosts, . , .

+1

Source: https://habr.com/ru/post/1725962/


All Articles