2012-05-29 48 views
2

我正在開發使用dojo 1.7並出現錯誤..我的目標是將項目從一個多選框移動到另一個。頁面很長,所以我只複製了相關的部分。不是dojo.ready上的函數(dojo 1.7相關)

這是我的頭js代碼,問題出現在dojo.ready之後。變量「newStore」工作得很好,所以我知道執行得很好。這是dojo.query(「button.switch」),似乎是問題。我得到的螢火蟲錯誤是

dojo.query("button.switch").connect is not a function 

並且在加載頁面時引發此錯誤。代碼是...

<script type="text/javascript"> 
require(["dijit/dijit"]); 
require(["dojo/parser"]); 
require(["dijit/layout/BorderContainer"]); 
require(["dijit/layout/ContentPane"]); 
require(["dijit/layout/AccordionContainer"]); 
require(["dijit/layout/TabContainer"]); 
require(["dijit/form/CheckBox"]); 
require(["dijit/form/Button"]); 
require(["dijit/form/ComboBox"]); 
require(["dijit/form/NumberTextBox"]); 
require(["dijit/form/SimpleTextarea"]); 
require(["dijit/form/TextBox"]); 
require(["dijit/form/Textarea"]); 
require(["dijit/form/MultiSelect"]); 
require(["clipart/ArrowLeft"]); 
require(["clipart/ArrowRight"]); 
require(["dijit/form/FilteringSelect"]); 
require(["dijit/form/RadioButton"]); 
require(["dijit/form/Select"]); 
require(["dojox/layout/GridContainer"]); 
require(["dojo/data/ItemFileReadStore"]); 
require(["dijit/Tree"]); 
require(["dojo/ready"]); 


dojo.ready(function(){ 
var newStore = new dojo.data.ItemFileReadStore({ 
    url: "http://0:3000/sample/sample_name" 
    }); 
    dijit.byId('sc_sample_name').set('store',newStore); 

dojo.query("button.switch") 
    .connect("onclick",function(e){ 
    switch(e.target.id.toString()){ 
     case "left" : dijit.byId("at2").addSelected(dijit.byId("at1")); break; 
     case "right" : dijit.byId("at1").addSelected(dijit.byId("at2")); break; 
    } 
    }); 
}); 

</script> 

這是一個頁面加載問題,這就是爲什麼我不包括HTML(這是巨大的)。有沒有人見過這種行爲?珍妮

+1

你能告訴其中* button.switch *聲明的線條。此查詢將爲您提供帶類別切換的按鈕的節點列表。 –

+1

你也可以檢查從dojo.query(「button.switch」)返回什麼?你能夠訪問節點列表的第一個元素 –

回答

3

我想你是裝baseless dojo,即你的dojoConfig/data-dojo-config有一個選項async:true,其切換道場毫無根據模式,因爲1.7版本。

使用query("button.switch").on("click", function(e) { ...})而不是connect

require([ 
    "dojo/ready", 
    "dojo/query" 
], function(
    ready, 
    query 
) { 

    ready(function() { 

     query("button.switch").on("click", function(e) { 
      console.log(e.target.id);    
     }); 
    }); 
});​ 

或不切換到毫無根據模式。

自己在此的jsfiddle試試:http://jsfiddle.net/phusick/LMdBd/,改變async: trueasync: false或完全刪除它,connect將工作:

enter image description here

+1

這是完美的!這解決了很多問題,你不僅給了我一個很好的答案,而且還闡明瞭這個過程。我非常欣賞這一點。回答你的業力!珍妮 –