将变量传递给dojo构件函数
问题描述:
下面的代码是我的构件的表示形式。这里我试图访问从另一个js传递的变量。将变量传递给dojo构件函数
define(["dojo/_base/declare",
"dojo/_base/lang"], function(declare, lang,){
return declare("myapplication.viewer.js.dynamicview",null,{
getTextBoxValue:null,
constructor : function(args){
alert("inside constructor");
console.log("args",args);
}
});
});
这是我从哪里打电话给我的小工具的js。
var abc={};
abc.title="helloworld";
var viewerWidget = new myapplication.viewer.js.dynamicview({getTextBoxValue:abc});
这里我传递一个对象给我的小部件变量。 但问题是,在我的小部件中,构造函数中的args变量是未定义的。我不确定我做错了什么。
需要从我的js中获取价值给我的小部件。
答
你是你的widget的mixin属性。这是您的小部件稍后的一步。见widget lifecycle here。
你最好的选择是使用postMixInProperties
而不是这种特殊情况下的构造函数。
答
您可以使用"dojo/_base/lang"
(混入),以新的属性添加到您的类的实例,
使用混入功能(lang.mixin()
):
constructor : function(args){
//below add new properties to the current instance
lang.mixin(this, args);
alert("inside constructor");
console.log("args",args);
}
答
使用mixin
,以“延长”你按照您的意愿,使用属性或例程的dojo类。
这是一个完整的例子;
https://jsfiddle.net/tsb3g6f9/9/
更多的资源在这里: https://dojotoolkit.org/reference-guide/1.10/dojo/_base/lang.html
require(['dojo/_base/declare', 'dojo/_base/lang'], function(declare, lang) {
var MyClass = declare(null, {
constructor: function(args) {
lang.mixin(this, args);
},
action: function() {
alert(this.a);
}
});
var obj = {
a: 100
}
var thomas = new MyClass(obj);
thomas.action();
});