2015-05-20 49 views
0

我有一個自定義的dojo小部件(提醒),我想重新加載一個事件(點擊小部件上的添加按鈕,一個對話框將打開填充提醒數據的位置,然後點擊提交點擊提交按鈕小部件應重新加載我填寫對話框中的數據)。我們如何重新加載自定義的dojo小部件

<body class="claro teller"> 
 

 
     <form name="tellerForm"> 
 
       <input type="hidden" name="expldQryStr" id="expldQryStr"> 
 
       <input type="hidden" name="actionCode" id="actionCode"> 
 
     </form> 
 

 
     <div class="row"> 
 

 
       <div data-dojo-type="MyCashBalanceWidget.MyCashBalance" data-dojo-props="title:'Our Cash Balance Widget',data:CashBalData,data1:invtData"></div> 
 
       <div data-dojo-type="MyFrequentTasksWidget.MyFrequentTasks"  data-dojo-props="pageName:'TellerLandingPage',title:'Our Some Widget',data:freqTskData"></div> 
 
       <div data-dojo-type="PendingTransactionWidget.PendingTransaction" data-dojo-props="title:'Pending Transaction Widget',data:pndTrnData,data1:pndVrfData"></div> 
 
       <div id="remWdgt" data-dojo-type="MyRemindersWidget.MyReminders"  data-dojo-props="pageName:'TellerLandingPage',title:'My Reminders Widget',data:rmndrData"></div> 
 
       <div data-dojo-type="MyAppsWidget.MyApps" data-dojo-props="pageName:'TellerLandingPage',title:'My Apps Widget'"></div> 
 
       <div data-dojo-type="MyActivityWidget.MyActivity" data-dojo-props="pageName:'TellerLandingPage',title:'My Activity Widget',data:analData"></div> 
 
     </div> 
 

 
     <div data-dojo-type="TellerLandingPageGridWidget.TellerLandingPageGrid" data-dojo-props="title:'Teller Landing grid',data:lastTrans"> 
 
     </div> 
 

 
     <script> 
 
       //including all the custom widgets 
 
       require(
 
           [ 
 
               "dojo/parser", 
 
               "CommonWidgets/MyFrequentTasksWidget", 
 
               "Widgets/MyCashBalanceWidget", 
 
               "Widgets/PendingTransactionWidget", 
 
               "CommonWidgets/MyRemindersWidget", 
 
               "CommonWidgets/MyAppsWidget", 
 
               "CommonWidgets/MyActivityWidget", 
 
               "Widgets/TellerLandingPageGridWidget" 
 
           ], 
 
           function(parser) { 
 
             parser.parse(); 
 
           }); 
 
     </script> 
 
</body> 
 
</html>
請建議我如何可以重新加載Dojo小部件。

+0

在這裏,我想重裝CommonWidgets/MyRemindersWidget部件 – Bhupesh

+0

嘗試發佈一你想要做什麼的最簡單的例子,你現在發佈的HTML什麼都不做,不會運行,並且不會給出你想要的東西的實際概念。我最好的猜測是,您有一個小部件A,您可以在其中輸入數據和小部件B,如果它提交,您希望在其中顯示數據。但是我在你的代碼中找不到任何東西。 – g00glen00b

+0

或者你有一個帶有對話框的小部件,如果你提交了,那麼在同一個小部件中它應該顯示這些數據,但我不確定你想要做什麼。 – g00glen00b

回答

0

我不確定你的完整情況。但在這種情況下,您有兩種方法: - 1)將事件偵聽器添加到您的自定義小部件中,該偵聽器將偵聽並自行修改。2)重新創建小部件,並將其構造函數傳遞給新值。

0

你的問題還不是很清楚,但從它的聲音來看,如果提交對話框中的表單,你只想設置特定DOM節點的innerHTML。沒有理由爲此重新加載小部件,您只需向對話框表單的提交事件添加事件處理程序,然後使用它在您的小部件中設置特定元素的innerHTML

所有你需要一個onLoad事件監聽器添加到您的對話框,讓你知道什麼時候該事件處理程序添加到窗體首先:

postCreate: function() { 
    this.myDialog = new Dialog(); 
    this.myDialog.on("load", lang.hitch(this, this.loadDialog)); 
    this.myDialog.set("content", "<div><form><input type='text' /><button type='submit'>Submit</button></div>"); 
}, 

這將調用一個函數loadDialog你的小部件,它看起來是這樣的:

loadDialog: function() { 
    var vm = this; 
    query("form", this.myDialog.domNode).on("submit", function(evt) { 
     evt.preventDefault(); 
     vm.myLabel.innerHTML = query("input", this).val(); 
     vm.myDialog.hide(); 
    }); 
}, 

此功能利用dojo/querydojo/NodeList-manipulate獲得表單字段值時,對話框內的形式提交。然後,該值用於改變myLabel上,我給屬性data-dojo-attach-point="myLabel",以便它從窗口小部件代碼中方便的小部件的元素:

templateString: "<div><label data-dojo-attach-point='myLabel'></label><button data-dojo-attach-event='onClick: openDialog'>Add</button></div>",