1

我正在尝试扩展 Sencha Touch Kitchensink 应用程序中的路由,如下所示:

我的数据(在列表存储中)如下:

{ category: 'fruit', str: 'tomato'},
{ category: 'fruit', str: 'green bean'},
{ category: 'vegetable', str: 'celery'},
{ category: 'vegetable', str: 'sprouts'},
{ category: 'notAVegetable', str: 'ketchup'},
{ category: 'notAVegetable', str: 'prune'}

我只想显示由特定类别选择的那些数据,例如“水果”

在 Main.js 控制器中,我试图通过从 Demos TreeStore 的“List”节点中获取另一个参数来做到这一点

routes: {
        'demo/:id/:category': 'showViewById',
        'menu/:id': 'showMenuById'
    },

showViewById 操作添加额外参数以供以后使用的位置

showViewById: function (id, category) {
    var nav = this.getNav(),
        view = nav.getStore().getNodeById(id);

    console.log('view ' + id);

this.showView(view);
    this.setCurrentDemo(view);
    this.hideSheets();

    // do stuff with category
},

我正在尝试在“列表”树节点中的 Demos.js 存储中添加和访问“类别”作为额外参数,如下所示:

{
    text: 'List',
    leaf: true,
    id: 'list',
    extraParams: {
        category: 'fruit'
    }
},

几个问题:我可以使用 extraParameter 将此属性添加到 Store 吗?如果是这样,我如何访问它以用于我的路由?我认为它可以作为我的 Demos 商店的元数据使用,但无法访问它。

除了创建多个商店(一个用于“水果”、“蔬菜”、“notAVegetable”等)之外,还有什么替代方法可以在它们上使用过滤器来实现相同的目标?

蒂亚!

4

0 回答 0