extjs - 如何初始化Ext.Direct?

标签 extjs extjs-mvc extjs4.2 ext-direct

我尝试将 Ext.Direct 与 ExtJS 4 MVC 结构一起使用,但无法添加提供程序。

我在调用 addProvider 时收到错误 Uncaught TypeError: Cannot call method 'addProvider' of undefined:

Ext.Direct.addProvider(Ext.app.REMOTING_API);

我在应用程序的 launch 和 Controller 的 init 中都进行了尝试。

Ext.define('Dir.Application', {
    require: [
        'Ext.direct.*',
        'Ext.data.*',
        'Ext.grid.*'
    ],
    launch: function(){
        Ext.Direct.addProvider(Ext.app.REMOTING_API);
    }
    ...
});

Ext.define('Dir.controller.Main', {
    init: function(){
        Ext.Direct.addProvider(Ext.app.REMOTING_API);
    }
    ...
});

两者都给出相同的错误。

addProvider 放入代码中的正确位置在哪里?

更新:应用 @rixo 的建议。

Ext.define('Dir.Application', {
    view:['Grid'],
    requires: [
        'Ext.direct.*',
        'Ext.data.*',
        'Ext.grid.*'
    ],
    launch: function(){
        Ext.Direct.addProvider(Ext.app.REMOTING_API);
    }
    ...
});

我的观点是定义一个存储和一个代理:

Ext.define('Dir.view.Grid', {
    extend: 'Ext.grid.Panel',
    store: {
        proxy: {
            type: 'direct',
            reader:{root: 'table'},
            api: {
                create: QueryDatabase.createRecord,
                read: QueryDatabase.getResults,
                update: QueryDatabase.updateRecords,
                destroy: QueryDatabase.destroyRecord
            }
        }
    ...
    }

现在第一个错误是好的,但我收到一个错误,提示 QueryDatabase 未定义。它是通过 Ext.Direct.addProvider(Ext.app.REMOTING_API); 处的提供程序定义的,但当通过 views: [] 加载 View 时它尚未准备好应用程序定义中的声明。

有没有一种方法可以在不将 Ext.application 嵌套在 Ext.onReady 中的情况下正常工作,就像 my solution 中那样?
对于 MVC 方式来说,没有嵌套会更好,如解释的 here in the docs .

最佳答案

应用程序定义中的 require 不会执行任何操作。应该是复数requires .

此外,您似乎在自己的答案中设计了这个,但是 Ext.direct.Manager 这个名称现在似乎比 Ext.Direct 更受 Sencha 的青睐.

编辑

根据docs ,您可以使用字符串设置直接函数。显然,这正是为了解决您遇到的问题。

这应该可以解决您的问题:

api: {
    create: 'QueryDatabase.createRecord',
    read: 'QueryDatabase.getResults',
    update: 'QueryDatabase.updateRecords',
    destroy: 'QueryDatabase.destroyRecord'
}

关于extjs - 如何初始化Ext.Direct?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19376978/

相关文章:

extjs - Extjs中窗口大小改变时如何显示 'pagingtoolbar'?

javascript - 如何获取 ExtJS 存储中记录的预排序索引?

javascript - 用于页面更改的 Sencha 静态顶部和底部栏

javascript - 在 MS Surface 触摸设备上呈现网页时滚动条无响应

javascript - 在 Extjs 4.2 中创建工具栏,应该像 Stack Overflow 工具栏一样

javascript - ExtJS checkcolumns 修改模型后无法编辑

javascript - ExtJS4:TreePanel Store 正在通过 Itemclick 一次又一次地加载 json 文件

javascript - 将默认函数分配给 Ext.Ajax.request 失败

Extjs图表整数 Axis

javascript - 在extjs 4.2中设置折线系列图表中的线条颜色