下面的代码是我的小部件的表示。在这里,我试图访问从另一个js传递的变量。
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);
}
});
});
这是我从我调用我的小部件的地方开始的。
var abc={};
abc.title="helloworld";
var viewerWidget = new myapplication.viewer.js.dynamicview({getTextBoxValue:abc});
这里我将一个对象传递给我的widget变量。 但问题是在我的小部件中,构造函数中的args变量是未定义的。我不确定我做错了什么。
需要从我的js到我的小部件获取价值。
答案 0 :(得分:1)
您是小部件的mixin属性。这是您的小部件中的后续步骤。见widget lifecycle here。
您最好的选择是使用postMixInProperties
而不是此特定情况的构造函数。
答案 1 :(得分:1)
您可以使用"dojo/_base/lang"
(mixin)向类的实例添加新属性,
使用mixin函数(lang.mixin()
):
constructor : function(args){
//below add new properties to the current instance
lang.mixin(this, args);
alert("inside constructor");
console.log("args",args);
}
答案 2 :(得分:0)
使用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();
});