0

我正在尝试在我的应用程序中添加导航。我在我的应用程序中定义了一些控制器,因此我可以通过this.getApplication().getController('SomeController'). 我想在我的导航视图上推送 SomeController 的视图实例。这可以通过使用很好,push({xtype: 'someView'})但在我的控制器中,如果我尝试更改我的视图,它会说它是未定义的。

我认为这是因为我推送的视图与我的控制器不同。这是我的控制器的代码示例:

config: {
    refs: {
        someView: {

            selector: '#someView',
            xtype: 'someView'
        }
    },
},
store: null,
setStore: function(){
 //creating store...
 //...
 someView.setStore(this.store);
}

这是我的观点:

Ext.define('EpaMobile.view.SomeView', {
extend: 'Ext.dataview.List',
alias: 'widget.someView',
xtype: 'someView',
requires: ['Ext.field.Search', 'Ext.Toolbar'],
4

1 回答 1

0

在控制器中引用时,将您的视图itemId用作选择器。而且aliasandxtype是一样的,所以只要坚持使用别名并删除xtype. 所以你的视图应该是这样的:

Ext.define('EpaMobile.view.SomeView', {
    extend: 'Ext.dataview.List',
    alias: 'widget.someView',
    requires: ['Ext.field.Search', 'Ext.Toolbar'],
    config: {
        ...
        itemId: 'someViewItemId',        
        ...
    }

    ...
}

最后将您的ref块修改为:

...
refs: {
    someView: {
        selector: '#someViewItemId',
        xtype: 'someView',
        autoCreate: true
    }
},
...

您现在应该可以使用push({xtype: 'someView'})而不会出现undefined错误。

于 2013-05-06T16:20:51.410 回答