Extjs 6.0 - ItemSelector:如何以编程方式 focus/highlight 一个元素?
Extjs 6.0 - ItemSelector: how to programmatically focus/highlight an element?
我在 Window 中有一个 ItemSelector 组件。我已经实现了一个搜索功能,可以根据用户的键盘输入动态找到匹配的条目。
现在我只想highlight/focus ItemSelector里面的这样的item。
我正在寻找类似的东西:
// when the search returned a result and got the related index in the store
function onSearchPerformed(index) {
var cmp = this;
cmp.itemSelector.setSelected(index); // here I'd be highlighting the entry
}
例子
想象一个简单的 ItemSelector,例如从网络上获取的 this one。
用户输入 'Delaw',我的搜索功能检测到有一个名为 Delaware 的条目,它在商店中的位置 3。
我想做的就是以编程方式突出显示 row/entry 'Delaware' 就像您单击它一样。
这个用户体验组件使用了一个 boundList,或者更好的是其中的两个。
一个 from 和一个 toList。
您需要获得对正确边界列表的引用。
您可以在这里找到更多相关信息:http://docs.sencha.com/extjs/6.0.1/classic/src/ItemSelector.js.html
基本上你可以这样做:
https://fiddle.sencha.com/#view/editor&fiddle/24ec
afterrender: function(cmp){
Ext.defer(function(){
var boundlist = cmp.down('boundlist');
item = boundlist.all.item(1);
boundlist.highlightItem(item);
},300);
}
获得正确绑定列表的引用后,您可以使用以下方式简单地突出显示该项目:
http://docs.sencha.com/extjs/6.0.1/classic/Ext.view.BoundList.html#method-highlightItem
注意之前可能需要调用以下函数:
http://docs.sencha.com/extjs/6.0.1/classic/Ext.view.BoundList.html#method-clearHighlight
找到正确的项目应该不会太难。
有两种方法可以解决问题
一种是按照@devbnz 的回答,标记为正确。如果您只想以图形方式 突出显示该条目而不触发任何事件,那么这是更可取的。
但是,如果将鼠标悬停在其他条目上,您将失去当前条目的突出显示。
第二个,正如@guilherme-lopes 在评论中所建议的那样,在您希望选择就像您实际单击条目一样的情况下可能更可取,这将触发 selectionchange
事件和类似...
根据情况,我最终使用了其中一种。
我在 Window 中有一个 ItemSelector 组件。我已经实现了一个搜索功能,可以根据用户的键盘输入动态找到匹配的条目。
现在我只想highlight/focus ItemSelector里面的这样的item。
我正在寻找类似的东西:
// when the search returned a result and got the related index in the store
function onSearchPerformed(index) {
var cmp = this;
cmp.itemSelector.setSelected(index); // here I'd be highlighting the entry
}
例子
想象一个简单的 ItemSelector,例如从网络上获取的 this one。
用户输入 'Delaw',我的搜索功能检测到有一个名为 Delaware 的条目,它在商店中的位置 3。
我想做的就是以编程方式突出显示 row/entry 'Delaware' 就像您单击它一样。
这个用户体验组件使用了一个 boundList,或者更好的是其中的两个。 一个 from 和一个 toList。
您需要获得对正确边界列表的引用。
您可以在这里找到更多相关信息:http://docs.sencha.com/extjs/6.0.1/classic/src/ItemSelector.js.html
基本上你可以这样做: https://fiddle.sencha.com/#view/editor&fiddle/24ec
afterrender: function(cmp){
Ext.defer(function(){
var boundlist = cmp.down('boundlist');
item = boundlist.all.item(1);
boundlist.highlightItem(item);
},300);
}
获得正确绑定列表的引用后,您可以使用以下方式简单地突出显示该项目:
http://docs.sencha.com/extjs/6.0.1/classic/Ext.view.BoundList.html#method-highlightItem
注意之前可能需要调用以下函数:
http://docs.sencha.com/extjs/6.0.1/classic/Ext.view.BoundList.html#method-clearHighlight
找到正确的项目应该不会太难。
有两种方法可以解决问题
一种是按照@devbnz 的回答,标记为正确。如果您只想以图形方式 突出显示该条目而不触发任何事件,那么这是更可取的。
但是,如果将鼠标悬停在其他条目上,您将失去当前条目的突出显示。
第二个,正如@guilherme-lopes 在评论中所建议的那样,在您希望选择就像您实际单击条目一样的情况下可能更可取,这将触发 selectionchange
事件和类似...
根据情况,我最终使用了其中一种。