I am developing using dojo 1.7 and am getting an error.. My aim is to move items from one multi select box to another. The page is long so I only copied the relevant parts.
Here’s my head js code and the problem comes after dojo.ready. The variable “newStore” works great so I know that is executing fine. it’s the dojo.query(“button.switch”) that seems to be the issue. The firebug error I get is
dojo.query("button.switch").connect is not a function
and this error is thrown on page load. The code is….
<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>
This is a page load issue which is why I am not including the HTML (which is huge). Has anyone seen this behavior before? Janie
I think you are loading baseless dojo, i.e. your
dojoConfig/data-dojo-confighas an optionasync:true, which switches Dojo to baseless mode since version 1.7.Use
query("button.switch").on("click", function(e) { ...})instead ofconnect:or do not switch into baseless mode.
Try it yourself at this jsFiddle: http://jsfiddle.net/phusick/LMdBd/, change
async: truetoasync: falseor delete it completely andconnectwill work: