Sencha Touch 2-通过控制器查看的值为错误



我想使用控制器中的值来过滤存储。我把这个代码:

我的控制器:

showCatQuery: function(list,index,element,record){
        var catid = record.get('id'); << Value to pass
        this.getNavigation().push({
            xtype: 'panel',
            title: 'A',
            scrollable: true,
            styleHtmlContent: true,
            catid: catid,
            layout: {
                type: 'fit'
            }, 
            items: [
                {
                    xtype: 'showSearchCategory',
                }
            ]
        });
    }

初始化中的我的视图

        this.callParent(arguments);
        var sto = Ext.getStore('allapp');
        sto.clearFilter();
        sto.filter('categoryid', this.getCatid());

并且此错误消息:

Uncaught TypeError: Object [object Object] has no method 'getCatid' 

您确定您的View有一个名为getCadid的函数吗?这就是错误消息试图告诉您的内容。您必须确保在初始化时有一个可用的方法。

另一种可能更简单的方法是过滤控制器中的存储——从我的角度来看,这将是更好的方法。视图将能够只关心任何内容是如何显示的,而控制器则关心要显示的数据。您可以使用引用和控件来等待视图完成加载,然后过滤存储(或等待用户激活自定义过滤器等):

Ext.define('myApp.controller.aController', {
extend: 'Ext.app.Controller',
config: {
    refs: {
        justAName: 'ViewName'
    }
    control: {
        justAName: {
             activate: 'onActivateView'
        }    
    }
}
onActivateView: function () {...}
});

这是控制器监听特定视图激活的基本存根。你可以在这个函数中获取你的商店,并通过控制器中的所有可用数据进行过滤。要从视图获取数据,请创建对它的引用,并在控制器中通过例如:访问它

var data = this.getJustAnotherName().getValue();
//having a reference to a textfield for example called justAnotherName

相关内容

最新更新