我想使用控制器中的值来过滤store.I把这段代码:
我的控制器:
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'
答案 0 :(得分:0)
您确定,您的View有一个名为getCadid的函数吗?这是错误消息试图告诉您的内容。初始化时,您必须确保有可用的方法。
另一种可能更简单的方法是过滤控制器中的商店 - 从我的角度来看,这是更好的方法。 View可以关心如何显示任何内容,控制器关心要显示的数据。 您可以使用引用和控件等待视图完成加载,然后过滤商店(或等待用户激活自定义过滤器等):
Ext.define('myApp.controller.aController', {
extend: 'Ext.app.Controller',
config: {
refs: {
justAName: 'ViewName'
}
control: {
justAName: {
activate: 'onActivateView'
}
}
}
onActivateView: function () {...}
});
这是控制器监听特定视图激活的基本存根。您可以在此功能中获取商店,并通过控制器中的所有可用数据对其进行过滤。要从View获取数据,请创建对它的引用,并通过控制器访问控制器,例如:
var data = this.getJustAnotherName().getValue();
//having a reference to a textfield for example called justAnotherName