2014-01-20 24 views
0

我有以下代碼:道場對話框:表演是不是一個函數

 function handlesomeObjDelete(someObj) { 
      query('#someObj-delete-link-'+someObj.id).on('click',function(){ 
       var youSureDlg = new Dialog({ 
        title: 'Delete someObj', 
        width:'250px', 
        id:'delete-someObj-dlg'+someObj.id, 
        content:'Are you sure you want to delete this someObj?' 
       }); 

       var yesBtn = new Button({ 
        label: 'Yes', 
        type: "button" 
       }); 

       var noBtn = new Button({ 
        label: 'No', 
        type: "button" 
       }); 

       on(yesBtn,'click',function(){ 
        request("someUrl/"+someObj.id, { 
         handleAs: "json", 
         type:'delete', 
         headers: { 
          "X-Requested-With": "", 
          "Content-Type": 'application/json; charset=utf-8' 
         } 
        }).then(function(){ 
         alert('deleted'); 
        }); 
       }); 

       on(noBtn,'click',function(){ 
        youSureDlg.hide(); 
       }); 

       yesBtn.placeAt(youSureDlg); 
       noBtn.placeAt(youSureDlg); 

       //youSureDlg.startup(); 
       youSureDlg.show(); 
      }); 
     } 

而且我得到以下錯誤:

TypeError: refNode is null 
packs[name] = packageInfo; 

TypeError: youSureDlg.show is not a function 
dojoSniffConfig 

我已經包括dijit.Dialog。如果我嘗試再次創建對話框,我會得到:嘗試註冊id爲id = id的小部件,但該ID已註冊

任何有關可能出錯的想法?

謝謝。

+0

我已經添加了更大範圍內的問題,也許它可以幫助 – user3199269

回答

0

嘗試做這種方式:

    if(!youSureDlg){ 
     var youSureDlg = new Dialog({ 
      title: 'Title', 
      id: "someID", 
      content: "", 
      style: "width:250pt", 
     }); 
     youSureDlg.show(); 
        } 

        else { 
         youSureDlg.show(); 
          } 

對話孤立,是一個單獨的盒子本身沒有結合到另一格或東西。

檢查了這一點:http://dojotoolkit.org/reference-guide/1.9/dijit/Dialog.html#dijit-dialog

希望它可以幫助你。

UPDATE1: 錯誤「試圖註冊......」 happends,當你希望啓動未刪除或使用後註銷一個小部件。你可以通過檢查小部件是否已經存在來處理這個問題。檢查我的代碼 - 我已更新它。

還要檢查這個舊帖子:Dojo dialog close event on X (top-right)Dojo and unregistering widgets

問候,楊千嬅

+0

感謝您的答覆。我已經嘗試過,但仍然沒有運氣。相同的「演出不是功能」錯誤。 – user3199269

+0

您是否檢查需求是否正確? – MiBrock

+0

是的。該對話框已創建,但未顯示。 – user3199269

0

似乎無法找到你的源參考節點。 這是小部件代碼錨定到的地方。新的Dialog 'yousuredlg'中的第二個參數應該是html中的實際div。

ex。

HTML

<div> 
    <div id="yousuredlg"></div> 
    <button id="goButton">Go</button> 
</div> 

JS

require(["dojo", "dijit", "dijit/Dialog", "dojo/on"], function (dojo, dijit, Dialog, on) { 
    var youSureDlg; 
    on(dojo.byId("goButton"), "click", function() { 
     if (!youSureDlg) { 
      youSureDlg = new Dialog({ 
       title: 'Title', 
       width: '250px', 
       id: 'someid', 
       content: 'some content' 
      }, 'yousuredlg'); 
     } 
     youSureDlg.show(); 
    }); 

}) 

http://jsfiddle.net/d2sa5/

相關問題