zoukankan      html  css  js  c++  java
  • 在Ext的JsonStore的load方法中使用回调callback(转)

    Ajax的异步请求有时候会带来一些问题,如在Ext做的页面中,需要加载一个JsonStore数据集,在紧跟着的代码中可能就会对数据集进行访问的操作,由于异步请求很可能导致数据未加载完就开始访问,结果可能会不是想要的结果。这里load方法中提供了一个callback回调函数,可以解决延迟加载的问题,我们需要处理的一部分代码可以放在callback函数中处理,这样就解决了异步请求带来的问题。如:

    Js代码
    1.var collectIndex_ds = new Ext.data.JsonStore({
    2. url: '',
    3. root: 'collectIndexs',
    4. id: 'id',
    5. fields:[
    6. {name:'id'},
    7. {name:'userViewId'},
    8. {name:'timeType'},
    9. {name:'measureUnitId'}
    10. ]
    11. });
    var collectIndex_ds = new Ext.data.JsonStore({
    url: '',
    root: 'collectIndexs',
    id: 'id',
    fields:[
    {name:'id'},
    {name:'userViewId'},
    {name:'timeType'},
    {name:'measureUnitId'}
    ]
    });
    其回调函数使用为

    Java代码
    1.//使用回调方法,可以解决延迟加载的问题;这里使用回调时为了把userViewId项为空的加上默认值1
    2. collectIndex_ds.load({
    3. callback :function(r,options,success){
    4. if(success){
    5. for(var i=0;i<r.length;i++){
    6. var record = r[i];
    7. var v = record.data.userViewId;
    8. if(v==null || v==""){
    9. record.set("userViewId",1);
    10. }
    11. }
    12. }
    13. }
    14. });
    //使用回调方法,可以解决延迟加载的问题;这里使用回调时为了把userViewId项为空的加上默认值1
    collectIndex_ds.load({
    callback :function(r,options,success){
    if(success){
    for(var i=0;i<r.length;i++){
    var record = r[i];
    var v = record.data.userViewId;
    if(v==null || v==""){
    record.set("userViewId",1);
    }
    }
    }
    }
    });
    Ext官网关于callback的解释

    引用
    callback : Function

    A function to be called after the Records have been loaded. The callback is called after the load event and is passed the following arguments:

    * r : Ext.data.Record[]
    * options: Options object from the load call
    * success: Boolean success indicator

     

    因为回调都用的是异步技术,我们还可以直接采用同步处理,掉用的代码如下

    unction syncCall(url, params) {
        var obj;
        var value;
        if (window.ActiveXObject) {
            obj = new ActiveXObject('Microsoft.XMLHTTP');
        } else if (window.XMLHttpRequest) {
            obj = new XMLHttpRequest();
        }
        obj.open('POST', url, false);
        obj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        obj.send(params);
        var result = Ext.JSON.decode(obj.responseText);
        return result;
    }

  • 相关阅读:
    算法
    爬虫--scrapy框架
    Flask--SQLAlchemy
    Flask--WTForms
    Django--model操作
    Odoo10 自定义模块创建
    odoo10 工作流、安全机制、向导
    odoo10 高级视图
    odoo10 onchange、唯一性约束
    Odoo10 模型(结构化的应用数据)、视图(用户界面设计)
  • 原文地址:https://www.cnblogs.com/dwfbenben/p/2404585.html
Copyright © 2011-2022 走看看