4

当我使用树视图组件加载商店时

store: 'somestore'

它具有以下设置:

Ext.define('App.store.AdminNavigationTree', {
    extend: 'Ext.data.TreeStore',
    model: 'App.model.AdminNavigationTree',
    storeId: 'AdminNavigationTree',
    headers: { 'Content-Type': 'application/json' },
    proxy: {
        type: 'ajax',
        url: settings.ApiUrl + '/View/AdminNavigation/?format=json',
        reader: {
            type: 'json',
            root: 'result',
        }
    },
    folderSort: true
});

数据加载正常。

当尝试使用以下商店调用 store.load 以填充表单时,它不会!

Ext.define('App.store.PromotionCompany', {
    extend: 'Ext.data.Store',
    model: 'App.model.PromotionCompany',
    storeId: 'PromotionCompany',
    headers: { 'Content-Type': 'application/json' },
    proxy: {
        type: 'ajax',
        url: settings.ApiUrl + '/Model/PromotionCompany/?format=json',
        reader: {
            type: 'json',
            root: 'result',
        }
    }
});

我正在为 API 使用 ServiceStack,并且这两个 URL 都已[EnableCors]设置并且确实 -store.load使用以下命令调用时:

store.load({
    params: { id: pcid },
    callback: function (records, options, success) {
        //do something
    }
});

我可以看到请求进入 API 并返回正确的数据!

有谁知道 ExtJs 可能在这里做什么?

4

1 回答 1

1

根据我在上一个 ExtJs + ServiceStack 项目中的回忆,TreeStore 和 Store 需要不同的数据结构。

  • 使用 Chrome Dev Tools 或 Firebug 检查响应对象,可能是解析问题。至少,它会帮助您更接近解决方案。
  • 仔细检查您的 JsonReader 属性(在您的商店中),我被抓了几次,因为我忘记在它上面设置“根”属性

编辑 1:我查看了我的代码,响应是相似的,唯一的区别是包含额外的信息,例如叶子:真等)。我也没有注意到您已经在代码示例中设置了根属性。

于 2013-08-30T05:50:24.357 回答