2

dojo 1.7を使用して開発していますが、エラーが発生します。私の目的は、あるマルチ選択ボックスから別のボックスにアイテムを移動することです。ページが長いので、関連する部分だけをコピーしました。

これが私の頭のjsコードで、問題はdojo.readyの後に発生します。変数「newStore」はうまく機能するので、正常に実行されていることがわかります。問題のように見えるのはdojo.query( "button.switch")です。私が得るfirebugエラーは

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(巨大な)を含めていません。誰かが以前にこの振る舞いを見たことがありますか?ジャニー

4

1 に答える 1

3

baseless dojoをロードしていると思います。つまり、dojoConfig/には、バージョン 1.7 以降Dojo をbaselessdata-dojo-configモードに切り替えるオプションがあります。async:true

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: trueするasync: falseか、完全に削除するconnectと動作します:

ここに画像の説明を入力

于 2012-05-30T05:57:40.713 に答える