2013-04-19 56 views
0

是否有方法使用dojo以編程方式定義小部件路徑。在dojo中以編程方式傳遞小部件路徑?

我在玩這裏使用的代碼。代碼工作正常。我可以動態地提供一個基於我在變量中設置的參數的路徑,而不是硬件編碼的小部件路徑。這樣我可以根據用戶所在的網站顯示不同的小部件。

<script> 
    require(["dojo/request", "dojo/dom", "dojo/_base/array", "my/widgets/AuthorWidget", "dojo/domReady!"], 
function(request, dom, arrayUtil, AuthorWidget){ 
// Load up our authors 
request("js/my/data/authors.json", { 
    handleAs: "json" 
}).then(function(authors){ 
     // Get a reference to our container 
    var authorContainer = dom.byId("authorContainer"); 
console.log("container:" +authorContainer ); 
    arrayUtil.forEach(authors, function(author){ 
     // Create our widget and place it 

     console.debug(author); 
     var widget=new AuthorWidget(author).placeAt(authorContainer); 


    }); 
}); 

});

+0

您的不同小部件是否都在同一個頂級包中?例如你的例子裏有'my'嗎? – BuffaloBuffalo

+0

@BuffaloBuffalo它是所有根據我的/部件 – bumblebee

回答

0

您可以通過修改dojoConfig來修改您創建的自定義Dojo包的位置(例如my包)。舉個例子:

<script type="text/javascript"> 
    dojoConfig = { 
     parseOnLoad : true, 
     async: true, 
     packages: [ 
      { 
       name: 'my', 
       location: '/path/to/my/package' 
      } 
     ] 
    } 
</script> 

您必須包括該代碼段,你包括Dojo.js以前

所以,現在您可以(在您網站的標題中)定義my包的位置,並根據您使用的網站更改此位置。

所以,如果你有2個網站,創建三個包:

  • 一個讓所有的小部件網站1
  • 一個名稱相同(但不同的位置)的小部件網站2
  • (可選)其中一個帶有應該用於網站1和網站2的小部件
+0

迪米特里感謝您的答覆。這是一個好主意,我使用dojoConfig。但我不想將它傳遞給那裏,我想看看我是否可以更改到小部件的路徑,或者可以使用相同的小部件,但將路徑更改爲模板字符串。在一些例子中,我看到了使用require([widgetPath],function(Widget))var w = new Widget({},「widget」);不知道如何在上面的例子中應用它 – bumblebee

相關問題