`
cedary
  • 浏览: 19051 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

ext参数传递

    博客分类:
  • ext
阅读更多
javascipt中变量的作用范围和参数传递是比较绕人的。Ext的Function.createDelegate()用来改变上下文和传递参数。非常好用。

createDelegate( [Object obj], [Array args], [Boolean/Number appendArgs] )
obj 是希望用的上下文环境
args 是想传入的参数
appendArgs 用来指明参数传入的方式.如果appendArgs为真,args将附加在参数列表之后;如果是数值,args将在参数列表的appendargs位置插入;其它情况下原参将不起作用.

var fn = func1.createDelegate(scope, [arg1,arg2], true)  
//fn(a,b,c) === scope.func1(a,b,c,arg1,arg2);  
var fn = func1.createDelegate(scope, [arg1,arg2])  
//fn(a,b,c) === scope.func1(arg1,arg2);  
var fn = func1.createDelegate(scope, [arg1,arg2], 1)  
//fn(a,b,c) === scope.func1(a,arg1,arg2,b,c);  


function getDetail(object, record, body, rowIndex)
    {
        Ext.Ajax.request({
        	url : detailURI ,
        	params : {
        	    id : record.data.id
        	},
        	success: updateDetail.createDelegate(expander, [body], true),
        	failure: function (result, request) {
        		Ext.MessageBox.alert('Failed', 'Successfully posted form: ' + action.date);
        	}
        });
    }

function updateDetail(result, request, body)
{
    body.innerHTML = result.responseText;
}


我希望将body做为附加的一个参数传入function updateDetail, 那我只需要写成updateDetail.createDelegate(expander, [body], true)就好。注意第3个参数,如果不给这个参数,[body]会替换掉参数result和request,那就没法拿到事件的返回参数了。

关于闭包问题,有很多地方讨论。  "(exp)()"

(alert)("test"); 

var elms = document.getElementsByTagName("input");
for (var i = 0; i < elms.length; i++) {
    (function () {
        var originalvalue = elms[i].value;
        elms[i].onchange = function () {
            alert(this.value + " == " + originalvalue);
        }        
    })();
}

Function.prototype.bind = function() {
  var __method = this;
  var args = Array.copy(arguments);
  var object = args.shift();

  return function() {
    var arg2 = Array.copy(arguments);
    return __method.apply(object, args.concat(arg2));
  }
}



记得以前在用actionscript2的时候,要改变方法的上下文,还需要这样调用:
myButton.addEventListener("click", Delegate.create(this, someMethod)); 


但在actionscript3后,当引用 someMethod 时, 将生成方法关闭。该方法关闭将自动记住其原始对象实例。 现在, 只需写入:
myButton.addEventListener("click", someMethod);



其实,都遵循ECMA,道理都相同。多练习,就会发现脉络很清楚。
做完这个demo后,我要开始看flex了,不能只停留在以前的flash基础上。也许一些小的component用flex会容易实现一些。
分享到:
评论

相关推荐

    extjs的数据传递

    ### ExtJS 数据传递详解 #### 一、引言 在Web开发中,前端与后端之间的数据交互至关重要。ExtJS作为一个强大的JavaScript框架,提供了多种方式进行数据传输,其中使用AJAX进行前后端通信是最常见的方式之一。本文...

    ext.net常见问题收集

    例如,可以通过JavaScript动态设置`url`属性,如`Window2.autoLoad.url = "http://192.168.0.5/print/FybxdPrint.aspx?iccode=" + document.getElementById("Hidden1").value`,并将必要的参数传递给加载的页面。...

    ext 的3种传参demo

    在IT行业中,"EXT"通常指的是ExtJS,这是一个基于JavaScript的UI库,用于构建富客户端应用程序。它提供了大量的组件和工具,使得...通过实践和不断探索,你可以更深入地理解EXTJS的参数传递机制,并运用到实际项目中。

    ext 前后台数据交互

    在该方法中,我们首先获取了前台传递的参数,然后使用业务逻辑来处理数据,最后将处理结果返回到前台。 四、前台数据处理 在上面的代码中,我们可以看到前台数据处理的实现方式。首先,我们使用Ext.MessageBox....

    ext几个实例

    - **params**: 请求参数,以键值对形式传递。 - **method**: HTTP请求方法,通常是GET或POST。 - **callback**: 接收响应后执行的函数,无论成功或失败。 - **success**: 请求成功时的回调函数。 - **failure**: ...

    EXT 分页,树形结构案列

    3. 参数传递:EXT请求中的分页参数或树节点ID可以通过Struts2的拦截器或ActionContext传递给Action,以便进行正确的数据查询和处理。 总结来说,EXT的分页和树形结构功能在构建复杂的Web应用程序中起着至关重要的...

    servlet 示例 +ext 页面展示

    在这个DEMO中,EXT可能被用来创建一个用户界面,该界面能够接收并展示Servlet传递过来的数据。 在启动这个DEMO时,你可能需要配置一个Web服务器(如Tomcat)并将项目部署到其中。服务器会监听特定端口,等待HTTP...

    extjs 分页是碰到的问题,点击下一页事,查询条件无法传递

    - 将这些查询条件作为参数传递给`store`的`load`方法。 2. **示例代码**: ```javascript var pagingToolbar = new Ext.PagingToolbar({ store: store, // store is the data store for this grid displayInfo...

    Ext_MessageBox

    `Ext.MessageBox.alert`函数用于显示一个简单的警告对话框,通常用于向用户传递一条信息或通知。 **示例代码:** ```javascript Ext.MessageBox.alert("hello", "nihaoa!"); ``` 该示例展示了如何通过`alert`方法来...

    extjs 前后台交互参数出现中文乱码问题的解决方法

    ### extjs前后台交互参数出现中文乱码问题的解决方法 #### 问题背景与原因分析 在使用MyEclipse开发工具进行Web应用开发时,尤其是采用ExtJS框架结合Ajax技术进行前后端数据交互的过程中,可能会遇到一个常见的...

    ext学习文档

    - **传递参数**: 说明了如何在事件处理函数中传递参数。 #### 13. 类设计 - **对象创建**: 介绍了EXT中对象的创建过程。 - **使用构造器函数**: 解释了如何使用构造函数创建对象。 - **方法共享**: 讲述了如何在...

    EXT提交服务器的三种方式

    这个方法可以直接向服务器发送GET或POST请求,传递参数,处理响应。例如,代码中展示了如何使用`Ext.Ajax.request`来向'login.do'发送一个请求,携带特定的参数。成功或失败的回调函数可以处理服务器的响应。 在...

    Ext.Ajax.request2.x实现同步请求

    在EXTJS中,`Ext.Ajax`对象提供了丰富的配置项和方法,如`params`用于传递请求参数,`headers`用于设置HTTP头,`timeout`定义请求超时时间等。同时,`Ext.Ajax`还支持全局配置,通过`Ext.Ajax.defaults`可以设置默认...

    extjs使用pagingtoolbar时,点击下一页,出现查询结果和查询条件不的解决办法

    这个问题通常出现在服务器端分页的场景,因为PagingToolbar默认传递的参数只有`start`和`limit`,这两个参数用于指定数据集的起始位置和每页显示的数量。 当我们的查询条件涉及多个字段,如`name`、`isUse`和`cpcod...

    Ext3.1 Ajax 精简包以及使用方法

    3. **发送数据:** 在`Ext.Ajax.request`中,可以通过`params`字段传递数据,或者使用`jsonData`、`xmlData`等字段直接传入JSON或XML格式的数据。 4. **处理响应:** 成功或失败的回调函数接收两个参数,分别是响应...

    Ext ajax 上传文件

    params: formData, // 将FormData对象作为参数传递 success: function(response) { var result = Ext.decode(response.responseText); console.log('文件上传成功:', result); }, failure: function(response)...

    ext导出excel

    例如,你可以创建一个EXT的按钮,关联一个事件处理器,处理器中调用`Ext.Ajax.request`并指定URL、方法、参数等。 总结来说,"ext导出excel"的过程主要包括以下步骤: 1. 在JSP页面上创建EXT组件,如Grid或Panel,...

    ext grid 动态扩展

    `store.reload` 方法用于重新加载数据,这里可以设置 `params` 以传递分页参数。 6. **Action 端处理** 在服务器端,如 `Action` 或其他 Java 类中,我们需要处理来自客户端的请求并返回 JSON 数据。例子中展示了...

    Ext+JSP实现数据提交

    `action.html`可能是服务器端处理数据提交的入口点,这里可以使用`request.getParameter()`获取前端传递的参数。 5. **业务逻辑处理**:在`JSP`或关联的`Servlet`中,开发者可以执行数据库操作、业务逻辑验证等任务...

    Ext 连接数据库的相关操作

    // 将查询条件传递给后端 store.load({params: {start: 0, limit: store.pageSize}}); } }); // 添加查询组件到页面 var queryPanel = new Ext.Panel({ layout: 'hbox', items: [queryField, queryBtn] }); ``...

Global site tag (gtag.js) - Google Analytics