首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >感官触摸: setValue on TextField不起作用

感官触摸: setValue on TextField不起作用
EN

Stack Overflow用户
提问于 2014-03-07 17:03:47
回答 1查看 782关注 0票数 1

在Sencha Touch 2中,我有一个控制器,它在按钮点击上调用自定义的“预填充”方法:

代码语言:javascript
复制
Ext.Ajax.request
    ({  
        method: 'GET',
        url:  myurl, //defined outside
        withCredentials: true,
        headers:{Authorization : auth},
        success: function(response){

            var data; 

            if(response.responseText.length > 0)
                  data = Ext.JSON.decode(response.responseText.trim());

            console.log(data);

            var fv = me.getFiscal();

            console.log(fv);

            fv.prepopulate(data);

            Ext.Viewport.animateActiveItem('fiscal', me.getSlideLeftTransition());
        },
        failure: function(response){
            Ext.Msg.alert('Server Error', 'Server down :( please try again later');
        }
    }


    );

查看代码:

代码语言:javascript
复制
prepopulate : function (data) {

    var me = this;


    var companyTextField = me.down('#fiscalForm').down('#companyTextField');
    var vatField = me.down('#fiscalForm').down('#vatField');

    var fiscalCodeTextField = me.down('#fiscalForm').down('#fiscalCodeTextField');
    var addressTextField = me.down('#fiscalForm').down('#addressTextField');

    var cityTextField = me.down('#fiscalForm').down('#cityTextField');
    var zipTextField = me.down('#fiscalForm').down('#zipTextField');

    var countryTextField = me.down('#fiscalForm').down('#countryTextField');
    console.log(vatField);
    console.log((data.vat));
    if(data){

        if(data.company_name)
            companyTextField.setValue(data.company_name);
        if(data.vat)
            vatField.setValue(data.vat);
        if(data.fiscal_code)
            fiscalCodeTextField.setValue(data.fiscal_code);
        if(data.address)
            addressTextField.setValue(data.address);
        if(data.city)
            cityTextField.setValue(data.city);
        if(data.zip)
            zipTextField.setValue(data.zip);
        if(data.country)
            countryTextField.setValue(data.country);

    }
    console.log(vatField);
}

AJAX调用运行良好,并在成功时调用预填充方法,传递从服务器检索到的数据。我尝试使用TextFields ()初始化setValue(),但是当我使用浏览器console.log()打开它时,表单看起来是“全新的”,告诉我_value私有字段是正确设置的.我现在在黑暗中摸索..。有洞察力吗?

提前谢谢你。

M.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-09 01:44:57

正如您建议使用console.log正确检索并显示在控制台中的数据一样,但是当调用setValue()时,浏览器找不到任何可见字段来修改值。

到目前为止,解决方案是按如下方式修改ajax请求:

代码语言:javascript
复制
Ext.Ajax.request
({  
....
....
    success: function(response){
    ....
        Ext.Viewport.animateActiveItem('fiscal', me.getSlideLeftTransition());

                    //view must be in the viewport before modifying data:
        var task = Ext.create('Ext.util.DelayedTask', function () {
                var fv = me.getFiscal();
                fv.prepopulate(data);
        });
        task.delay(1000);
.....
....
...
..
.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22256201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档