这是对这问题的跟进。
所以我有一个前AMD dojo代码:
dojo.require(...);
dojo.provide("abc.def.foo");
som.var.iable = {A:1,B:2};
som.var.iable2 = {C: 3, D:som.var.iable.B}
dojo.declare("blah",[],{
//code based on the above variables
});对于AMD,在阅读了这和前面的链接之后,我正在尝试这样的方法
som.var.iable = {A:1,B:2};
som.var.iable2 = {C: 3, D:som.var.iable.B}
define([
"dojo/_base/declare",
], function(declare){
return declare("abc.def.foo", null {
});
});
define([
"dojo/_base/declare",
], function(declare){
som.var.iable = {A:1,B:2};
som.var.iable2 = {C: 3, D:som.var.iable.B}
return declare("blah", null {
//code based on the above variables
});
});显然这是失败的,因为没有像som.var.iable这样的对象结构。我可以,但我的问题是它是如何在遗留代码中工作的?正确的AMD对应值是什么?
任何帮助都是非常感谢的!
发布于 2013-10-24 18:35:39
好吧,下面是我对你想要做的事情的假设:
some的全局变量,它带有一个属性var,这只是一种组织东西的方法some/var/iable、some/var/iable2和blah。这意味着三个文件和三个define()调用som.var.iable和som.var.iable2都不是真正的可继承类,它们只是普通的旧对象.所以只有blah需要使用declare()因此,您应该创建一个文件som/var/iable.js,它提供了一个普通的对象:
define([
],
function(){
return {A:1,B,2}
});另一个名为som/var/iable2.js,它是一个提供普通对象的模块:
define([
"som/var/iable",
],
function(iable){
return {C: 3, D:iable.B}
});然后是提供类对象的第三个模块blah.js:
define([
"dojo/_base/declare",
"som/var/iable2"
],
function(declare,iable2){
var parentClasses = [];
var clazz = declare(parentClasses, {
constructor : function(){
// No need for this.inherited(arguments) in this particular case
alert("Welcome to the constructor. Did you know that iable2.D is "+iable2.D+"?");
},
});
return clazz;
});我还没有对所有这些进行测试,但是为了让它在您最终想要放置的页面中开始:
require(["blah",dojo/domReady!"], function(blah){
var b = new blah();
});Dojo应该负责按顺序加载所有的东西,这样您就可以得到这样一个警告:
欢迎来到构造函数。你知道i2.D是2吗?
https://stackoverflow.com/questions/19572917
复制相似问题