【问题标题】:ExtJS 4.1.1a : JsonStore + proxy + url = "Cannot call method 'indexOf' of undefined"ExtJS 4.1.1a:JsonStore + proxy + url =“无法调用未定义的方法'indexOf'”
【发布时间】:2013-01-01 07:39:40
【问题描述】:

此代码块有效:

Ext.define('MyApp.store.MyJsonStore', {
    extend: 'Ext.data.Store',
    fields: ['fieldName'],
    proxy: {
        type: 'ajax',
        url: 'json.php',
        reader: 'json'
    }
});

这个崩溃了:

Ext.define('MyApp.store.MyJsonStore', {
    extend: 'Ext.data.JsonStore',
    fields: ['fieldName'],
    proxy: {
        type: 'ajax',
        url: 'json.php',
        reader: 'json'
    }
});

这里是出现问题的地方:

我是不是做错了什么?

【问题讨论】:

    标签: extjs4.1 jsonstore


    【解决方案1】:

    JsonStore 在 ExtJs 库中有点像红色区域...

    如果您查看JsonStore 的来源,您会看到:

    constructor: function(config) {
        config = Ext.apply({
            proxy: {
                type  : 'ajax',
                reader: 'json',
                writer: 'json'
            }
        }, config);
        this.callParent([config]);
    }
    

    实际上,商店会覆盖您自己的配置。

    老实说,我很难想象你为什么更喜欢JsonStore 而不是Ext.data.Store。从设计的角度来看,Json 更像是一种阅读器——存储只是存储记录。

    我只在我的应用中使用Ext.data.StoreExt.data.TreeStore

    【讨论】:

    • 我最近从 4.1.0 切换到 4.1.1 以获得编译器和 MVC 功能。使用阻止版本,此代码是正确的。谢谢你的解释,我现在好了。
    • JSON 存储很烂!我为这种无意义的事情浪费了一整天。它曾经在早期版本中运行良好
    【解决方案2】:

    我在带有 JsonP 存储的 Ext JS 4.2.1 中遇到了类似的问题,这是由于未在初始存储配置中设置 URL 而引起的。我在加载过程中动态地创建了 URL:

    myStore.load({ url: 'json.php' });
    

    这导致它成功加载传递的 URL,但我也得到了与您完全相同的错误和堆栈跟踪,并且数据从未真正显示(我只能通过 Chrome 开发人员工具看到它)。我使用以下代码解决了这个问题:

    myStore.proxy.url = 'json.php';
    myStore.load();
    

    我知道我们所做的事情并不完全相同,但我们得到的错误是相同的,所以希望这至少可以为您指明正确的方向。

    更新

    事实证明,问题实际上源于自动加载其值的 ComboBox。当我点击它时,它会尝试重新加载值,即使我第一次通过在 load({ }) 调用中传递 URL 成功加载了它们,它使用的是它自己的使用代理的加载方法URL(未定义)。这就是设置代理 URL 停止错误的原因。

    对我来说真正的解决方案是通过将 queryMode 配置设置为 local 来防止 ComboBox 自动加载。

    【讨论】:

    • 对不起,我不记得上下文了,自从这个问题发生以来已经花费了很多时间。无论如何,感谢您的贡献,这肯定可以帮助某人。
    猜你喜欢
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    相关资源
    最近更新 更多