2015-12-25 18 views
0

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

回答

1

你是你的widget的mixin属性。这是您的小部件稍后的一步。见widget lifecycle here

你最好的选择是使用postMixInProperties而不是这种特殊情况下的构造函数。

1

您可以使用"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); 
} 
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(); 

});