2015-12-25 11 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(); 

});