【问题标题】:ExtJS 6 store.remove(records) -> store.sync() don't trigger the serverExtJS 6 store.remove(records) -> store.sync() 不触发服务器
【发布时间】:2016-06-08 09:25:03
【问题描述】:

我使用 ExtJS 6.0.0,带有 TreeStore 的 REST 代理。因此,当我从商店 store.remove(records) 中删除一些记录时,然后尝试将更改与服务器同步并调用 store.sync() 并没有发生任何事情!未调用同步的回调函数。

url: '/admin/pages',以正确的格式返回简单的嵌套数据。 查看和更新​​操作运行良好。

我做了一个简单的代码片段来说明问题:

    Ext.define('Pages', {
        extend: 'Ext.data.TreeModel',
        fields: [
            {name: 'id',     type: 'int'},
            {name: 'parent_id', type: 'int'},
            {name: 'title', type: 'string'}
        ]
    });

    Ext.onReady(function() {

        var store = Ext.create('Ext.data.TreeStore', {
            model: 'Pages',
            proxy: {
                type: 'rest',
                url: '/admin/pages',
            }
        });

        var tree = Ext.create('Ext.tree.Panel', {
            width: 500,
            height: 300,
            renderTo: Ext.getBody(),
            rootVisible: false,
            store: store,
            multiSelect: true,
            columns: [{
                xtype: 'treecolumn',
                text: 'title',
                sortable: true,
                dataIndex: 'title'
            }],
            tbar: [
                {
                    text: 'Delete',
                    handler: function () {

                        var records = tree.getSelection();
                        store.remove(records); // remove nodes from tree
                        store.sync(); // do nothing!! WHY?

                    },
                }
            ]
        });

【问题讨论】:

  • 你试过autoSync吗?
  • 是的,结果相同。 GET POST PUT 请求正常,但没有 DELETE。
  • 也许这个link可以帮助你

标签: extjs extjs6


【解决方案1】:

如果存储配置为 autoSync:true,则记录的 endEdit 方法将在内部导致在存储上执行保存。我们只需要在 autoSync 为 false 时手动保存,否则我们会创建重复的事务。 使用 store.sync() 进行同步后,您需要调用 store.load()

【讨论】:

    猜你喜欢
    • 2011-12-13
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多