将变量传递给dojo小部件构造函数

时间:2015-12-25 06:01:56

标签: javascript dojo

下面的代码是我的小部件的表示。在这里,我试图访问从另一个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到我的小部件获取价值。

3 个答案:

答案 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();

});