Sencha Touch Framework中的左侧navigationView(关于Ext.data.TreeStore的问题)

时间:2011-03-05 15:51:49

标签: javascript sencha-touch extjs

我想像iPad一样动态设置左侧导航菜单 所以,我对演示示例进行了一些修改。您还可以访问此官方示例here

sink.StructureStore = new Ext.data.TreeStore({
    model: 'Demo',
    //root: {
    //    items: sink.Structure
    //},
    proxy: {
        type: 'ajax',
        url: 'words.json',
        reader: {
            type: 'json',
            root: 'items'
        }
    }
});

为了更容易实现,我尝试从“words.json”获取JSON数据。 (理想情况下,JSONP类型更好......尝试过,但没有运气。)

以下是“words.json”的内容:

{
    text: 'User Interface',
    cls: 'launchscreen',
    items: [{
        text: 'Buttons',
        card: demos.Buttons,
        source: 'src/demos/buttons.js',
        leaf: true
    },  
    {   
        text: 'Forms',
        card: demos.Forms,
        source: 'src/demos/forms.js',
        leaf: true
    },  
    {   
        text: 'List',
        card: demos.List,
        source: 'src/demos/list.js',
        leaf: true
    }]  
}

它最终没有出现。怎么了?我弄错了吗? (API here

我想做什么?

像字典一样,左侧是单词的导航项。单击它时,单词的含义将显示在右侧视图中。

我无法在 sencha framework中运行NestedList示例。 点击表格单元格并在其上推送另一个视图(即在Sencha:NestedList中)是我想要做的。

尝试过但没有运气:

  1. 使用NestedList示例
  2. 用ScriptTagProxy(JSONP)替换代理
  3. 使用更简单的代理实现(在代码中显示)
  4. 我不确定我的描述是否足够清楚,请随时告诉我哪个部分不清楚。并提前感谢!

1 个答案:

答案 0 :(得分:0)

如果words.json看起来像你上面那么,那可能是你的问题。

这应该是它的样子。

{
    "text": "User Interface",
    "cls": "launchscreen",
    "items": [{
        "text": "Buttons",
        "source": "src/demos/buttons.js",
        "leaf": true
    }, {
        "text": "Forms",
        "source": "src/demos/forms.js",
        "leaf": true
    }, {
        "text": "List",
        "source": "src/demos/list.js",
        "leaf": true
    }]
}

我还使用内存代理(默认)和ajax代理附加了您想要的完整工作副本。

Ext.regApplication({
    name: 'test',
    launch : function(){
        var nL = new Ext.NestedList({
            store: test.stores.testTreeStore,
            fullscreen: true,
            itemTextTpl : '{text}'
        });
    }
});
Ext.ns('test.data');

test.data.words = {
    text: 'User Interface',
    cls: 'launchscreen',
    items: [{
        text: 'Buttons',
        source: 'src/demos/buttons.js',
        leaf: true
    },  
    {   
        text: 'Forms',
        source: 'src/demos/forms.js',
        leaf: true
    },  
    {   
        text: 'List',
        source: 'src/demos/list.js',
        leaf: true
    }]  
};

test.models.testTreeModel = Ext.regModel('testTreeModel', {
    fields: ['text','source','card','leaf'],
    proxy: {
        type: 'memory',
        data: test.data.words,
        //type: 'ajax',
        //url: 'words.json',
        reader: {
            type: 'json',
            root: 'items'
        }
    }
});
test.stores.testTreeStore = new Ext.data.TreeStore({
    model: 'testTreeModel'
});