在标记字段值中查找特定单词

Find certain words in tagfield values

Extjs 5.

我的应用程序有一个带有标签字段的表单,其中包含 200 多个项目的列表。

这些项目中大约有 30 个包含单词 'another thing'(例如)。 每次我 select 这些项目之一应该被动态添加到文本区域字段的表单中。

我尝试了几种解决方案,但都没有成功,包括使用 match()、indexOf() 和 search() javascript 方法。

onSelect : function (combo, records, eOpts) {
    var records = combo.getValue();
    for (var i = 0, count = records.length; i < count; i++) {
            while( records[i] == '%another thing%'){ //I know this is not the right way; Just to show what I'm looking for
                console.log('OK'); //logic...
                return;
            }
        }
  },

我将不胜感激。

提前致谢。

试试这个代码:

onSelect: function (field, records, opts) {
    // records parameter already contains all selected tags
    var found = Ext.Array.filter(records, function(r) {
        // conditions go here
        return r.get('text') === 'aardvark' || 
            r.get('text') === 'aardwolf';
    });
    // check if we found anything
    if (found.length > 0) {
        console.log(found);
    }
}

Fiddle: http://jsfiddle.net/wsm6an0n/2/

如果您想像搜索一样使用通配符,请使用 indexOf 而不是比较:

onSelect: function (field, records, opts) {
    // records parameter already contains all selected tags
    var found = Ext.Array.filter(records, function(r) {
        // conditions go here
        return r.get('text').indexOf('aa') !== -1; // LIKE '%aa%'
    });
    // check if we found anything
    if (found.length > 0) {
        console.log(found);
    }
}

Fiddle: http://jsfiddle.net/rq90eLh4/1/