2013-10-13 28 views
0

我有一個爲菜單項「delete」定義的函數,右鍵單擊樹層次結構中的任何文件夾時,刪除一個樹文件夾。但在它的點擊,我得到了以下錯誤消息「存儲爲空或不是對象錯誤道場」存儲爲空或不是dojo中的對象錯誤

任何人都可以建議我如何糾正此錯誤信息?有什麼問題在下面我的功能?

<ul dojoType="dijit.Menu" id="tree_menu" style="display: none;"> 
     <li dojoType="dijit.MenuItem" data-dojo-props="disabled: false, 
            onClick: function (evt){ 
            store.deleteById(selectedItemId); 
            resetEditor(); 
           }",>Delete project</li></ul> 

樹結構

- Main Project 1 
Sub Project 1_1 
Sub Project 1_2 
* sub Project 1_3 

+ Main Project 2 - 
Main Project 3 

Sub Project 3_1 - 
Sub Project 3_2 
Sub Project 3_2_1 
+0

那麼,你在'onClick'函數中引用了一個'store'變量,但是我猜這個函數在該函數可見的範圍內實際上不可用......你在哪裏定義你的商店? (並且在那裏定義了'resetEditor',因爲這可能是它會投訴的下一個東西。) –

+0

嗨,肯定,我已經在mycode的開頭定義了商店。同樣的代碼適用於按鈕,但是當我將其轉換爲菜單項。可能的原因是什麼?我們是否可以像上面所做的那樣爲菜單項實現相同的代碼?因爲奇怪的是它響應按鈕,但是menu-item失敗。這裏是按鈕代碼:

回答

0
了的onClick功能在菜單項背景下,這意味着在你的onclick功能,「這」指的是菜單項控件實例中運行出現

要使用你的商店變量在onclick方法,您可以先引用它在你的widget是這樣的:

<ul dojoType="dijit.Menu" id="tree_menu" style="display: none;"> 
    <li dojoType="dijit.MenuItem" data-dojo-props="disabled: false, 
           _store: store, 
           onClick: function (evt){ 
           _store.deleteById(selectedItemId); 
           resetEditor(); 
          }",>Delete project</li></ul> 

或者你可以在窗口中上下文引用您的全球存儲對象:

<ul dojoType="dijit.Menu" id="tree_menu" style="display: none;"> 
    <li dojoType="dijit.MenuItem" data-dojo-props="disabled: false, 
           onClick: function (evt){ 
           window.store.deleteById(selectedItemId); 
           resetEditor(); 
          }",>Delete project</li></ul> 
+0

嗨塞巴斯蒂安,我試過你在我的代碼刪除menuitem建議的更改,但它不工作。我試了兩種建議的方式,它不響應刪除菜單項。我已在第一個線程的「非工作代碼」標題下添加了我的全部代碼。如果我在我的代碼中犯了錯誤,你能否看看?奇怪的部分是,如果我們把一個按鈕,而不是menuitem它的作品。 –

+0

嗨,你的代碼看起來有點小錯誤:在MenuItem的onClick方法中,你調用_store.deleteById(selectedItemId);而不是this._store.deleteById(selectedItemId); –

+0

嗨塞巴斯蒂安,當我用this._Store.deleteById(selectedItemId);我在Firebug和IE dev調試工具中得到了這個錯誤信息。 「'this._store'爲空或不是對象」。我的代碼位於標題爲「非工作代碼」下的第一個線程中。你能否看看我的代碼中是否還有別的東西,這是我遇到的最怪異的問題之一,因爲按鈕點擊調用函數,但是相同的函數不能從菜單調用。我的代碼可以複製到一個.txt並保存as.html.Open HTML&允許ActiveX,然後它會運行。右鍵點擊文件夾找到刪除menuitem不工作。 –

相關問題