-
dojo关于函数调用顺序的问题5
我想在chooseQuery方法执行的最后调用search()函数,而search()要引用生成的输入框的值,然而我的代码程序每次执行的时候,当调用search()时,输入框中的值还未设进去,即每次得到的值是空的.但是设置输入框的方法明明在search()函数之后执行的。而我确定值有设进去。是不是和上下文有关?
/** * @param data * @return */ function chooseQuery(data) { var methodCount = dojo.query("input[type='radio']"); for (var i = 0; i < methodCount.length; i++) { if (methodCount[i].checked) { var optionValue = methodCount[i].value; // queryName是一个FilteringSelect 改变它的选项 queryName.attr("value",optionValue,false); // 根据变化的选项值创建不同的输入框或下拉框 selectQuery(); // 初始化显示grid的面板 initGridPane(); // 将值设置到生成的输入框中 addElementToDialogById(optionValue,data); queryName._lastValueReported=null; dijit.byId("availableQueriesDialog").hide(); dijit.byId("queriedConcept").attr("style", "display:none;"); break ; } } // 根据值进行查找 search(); }
selectQuery();的代码如下function selectQuery() { intiParamPane(); var datatr = dojo.byId("datatr"); qnStore.fetch ( { // search items by condition query : { name :queryName.value }, onComplete : function(items, request) { if ((qnStore.getValues(items[0],"parameter")).length > 0) { var properties = qnStore.getAttributes(items[0]); // hold all of the values for the parameter var parameters = qnStore.getValues(items[0], properties[1]); // hold all of the types for parameter var types = qnStore.getValues(items[0], properties[2]); // judge the parameter whether is needed var requires = qnStore.getValues(items[0], properties[3]); // if has regular var regulars = qnStore.getValues(items[0], 'regular'); for (var i = 0; i < parameters.length; i++) { document.getElementById("inputDiv").setAttribute("class", "inputDiv"); if (types[i] == "array") { createSelectElement(datatr, parameters[i],requires[i], types[i]); } else { createInputElement(datatr, parameters[i], requires[i], regulars[i]); } } } } } ); }
search()函数代码如下function search() { var queryName = dojo.byId('queryName').value; var flag = validateParameter(queryName); if (flag) { return; } initGridPane(); var dialog = (dijit.byId("waitDialog") == null ? showWaitingDialog() : (dijit.byId("waitDialog"))) ; dialog.show(); qnStore.fetch ({ // search items by condition query : { name :queryName }, onComplete : function(items, request) { var properties = qnStore.getAttributes(items[0]); // hold all of the values for the parameter var parameters = qnStore.getValues(items[0], properties[1]); // hold every params var params = "?method="+queryName; for (var i = 0; i < parameters.length; i++) { var attribute = parameters[i]; var _value = dojo.byId(parameters[i]).value; params += "&"+attribute+"="+_value; } console.log(browser_action_name + params); dojo.xhrGet ( { handleAs: 'json', url: browser_action_name + params, load:showResult, error:availableQueriesDialog } ) } }); }
2010年12月03日 10:17
目前还没有答案
相关推荐
同时,为了确保多重继承中成员函数的访问顺序,Dojo引入了C3线性化算法,有效地解决了继承顺序问题。这些技术的应用,使得Dojo能够提供强大而灵活的面向对象编程能力,为开发者构建复杂应用提供了有力支持。
- **函数调用**: 在非构造函数调用中,`this` 通常指向全局对象 (`window` 在浏览器环境中)。 - **对象方法调用**: 在对象的方法调用中,`this` 指向该对象。 - **构造函数调用**: 使用 `new` 关键字调用函数时,`...
- 注意回调函数中参数的顺序必须与`require`函数第一个参数中的插件顺序一致。 #### 三、Dojo动画功能 1. **移动动画** Dojo提供了丰富的动画功能,其中`fx.slideTo`方法可用于实现元素的移动动画效果。基本...
在dojoConfig对象中,我们可以配置 dojo 框架的行为,例如指定模块的位置、加载的顺序等。下面是一个基本的dojoConfig配置示例: ```javascript var dojoConfig = { packages: [{ name: "js", location: ...
5. **通知主程序**:所有JS文件加载完毕后,`JSLoader`会触发一个全局事件或调用预设的回调函数,以便开发者进行后续操作。 ### 结合Dojo进度条 在示例中,`JSLoader`被用于与Dojo的进度条(ProgressBar)组件结合...
在ArcGIS API for JavaScript中,通过require函数调用特定模块,可以异步加载所需的资源,这对于提升Web应用性能至关重要。 ArcGIS API for JavaScript的API结构也非常丰富。例如,esri.map是创建地图的主要入口点...
6. **Spying and Stubbing**:在更复杂的测试场景中,可能需要对对象函数进行监控(spying)或替换(stubbing)。Cypress的`cy.spy()`和`cy.stub()`可以帮助我们实现这一点,以便在不实际调用外部服务的情况下测试...
程序描述:本章将介绍 GWT应用中高级应用的部分,包括各中组件和布局、如何发送XMLHttpRequest请求,以及如何解决浏览器历史记录问题等等,同时读者还将详细的了解RPC应用的开发过程。 /xmlsample/AjaxSample....
- **Dojo Toolkit**:ArcGIS API基于Dojo Toolkit构建,熟悉其模块化开发方式和Widget库能提高开发效率。 - **异步编程**:地图加载、服务请求等通常是异步的,理解Promise或回调函数是必要的。 - **CSS和HTML...
拦截器是一系列按照特定顺序执行的函数,可以实现如日志、权限验证、事务管理等通用功能,无需在每个Action中重复编写。 3. **配置文件**:Struts2的配置文件通常为`struts.xml`,用于定义Action、结果类型、包配置...
在同步编程模式中,代码按照顺序执行,每一行代码必须等待其前一行代码完成才能继续,这就导致了当某个耗时操作(如网络请求)发生时,整个程序会暂停,直到该操作完成。而在异步编程中,程序不会等待耗时操作完成,...
- `map(callback, thisObject=null)`: 创建一个新数组,其结果是调用一个提供的函数后的原数组每一项。 - `pop()`: 删除并返回数组的最后一个元素。 - `push(...items)`: 向数组的末尾添加一个或更多元素,并返回...