Model view controller Extjs:如何从视图访问外部存储';s渲染器
我有一个网格,其中有一些存储,分配给它,并使用combobox作为列编辑器(另一个存储值)。为了在网格中显示正确的值,我使用自定义渲染器,在这个渲染器中,我需要访问combobox的存储——这就是问题所在 我认为有两种可能的方法:Model view controller Extjs:如何从视图访问外部存储';s渲染器,model-view-controller,extjs,extjs4,renderer,Model View Controller,Extjs,Extjs4,Renderer,我有一个网格,其中有一些存储,分配给它,并使用combobox作为列编辑器(另一个存储值)。为了在网格中显示正确的值,我使用自定义渲染器,在这个渲染器中,我需要访问combobox的存储——这就是问题所在 我认为有两种可能的方法: 以某种方式将该存储从控制器放入网格 从组合框中获取存储 不幸的是,我找不到解决方案。你能帮助我吗?先谢谢你 当前的渲染器代码目前无法解决我的问题(需要重新制作才能从存储中获取标题) UPD:新渲染器,正在工作: var comboRenderer = func
var comboRenderer = function(value, metaData, record, rowIndex, colIndex, store, view) {
var types_store = Ext.getStore('comboStore');
var index = types_store.findExact('name', value.toString());
if (index != -1) {
return types_store.getAt(index).get('title');
} else {
return value;
}
};
请注意,使用Extjs的推荐方法是使用他们的MVC应用程序架构。然而,在蒙面之下,这场战争正在进行。您可以尝试使用它的别名来尝试获取存储。发布一些代码,如何声明相关视图/控制器?似乎要显示的值应该在呈现行的记录中,而不是组合框的存储中。如果你需要显示属性,你应该考虑把它带到记录中并在渲染器中使用它。@ EvanTrimboli有很多代码,你到底想看什么?是的,我有单独的视图和控制器。@dbrin我添加了渲染器代码-这是你的意思吗?如果是-它在编辑网格时工作正常,但在网格创建时,当我从服务器加载数据时,它不能以这种方式取值-
combo
为null
。所以我想直接从存储中获取它。组合框存储在所有行中都是相同的吗?然后,您可能只需要执行Ext.getStore(..)。对于b)不起作用?
var comboRenderer = function(value, metaData, record, rowIndex, colIndex, store, view) {
var types_store = Ext.getStore('comboStore');
var index = types_store.findExact('name', value.toString());
if (index != -1) {
return types_store.getAt(index).get('title');
} else {
return value;
}
};