用于搜索的通配符表达式

时间:2012-06-28 19:25:14

标签: javascript search titanium appcelerator

我有一个按钮,我想在搜索结果的末尾显示重要的内容。为此,我已将'filter'属性添加到我的表行。我需要的是一种获取该行的方法(例如过滤器匹配),无论输入到搜索栏中的是什么。我假设我需要某种形式的通配符。做了一些研究,我还没有找到任何简单地向我展示通配符的东西。我似乎使用正则表达式的大多数结果。那么,有可能这样做吗?

search : Ti.UI.createSearchBar({
        barColor : '#666',
        height : '45dp',
        top : 0,
        showCancel : false
    }),
    filterAttribute : 'filter',
//Above is from the Table code, below is the row's code.
var buttonRow = Ti.UI.createTableViewRow({
        backgroundImage : $$.components.RowBG,
        selectionStyle : 'none',
        height : '60dp',
                filter : 'I NEED THIS FILTER TO RETURN NO MATTER WHAT IS INPUTTED IN SEARCH'
    });

1 个答案:

答案 0 :(得分:0)

我不确定如何使用通配符,但您可以动态更改最后一行的'filter'属性与搜索值相同:

var data = ['oranges', 'grapes', 'lemons', 'kiwi', 'apples', 'limes'];

var rows = [];

for (var i = 0; i < data.length; i++) {
    var row = Ti.UI.createTableViewRow({
        title : data[i],
        filter : data[i]
    });
    rows.push(row);
}

var magicRow = Ti.UI.createTableViewRow({
    title : 'I am always here',
    filter : 'set by code'
});
rows.push(magicRow);

var search = Titanium.UI.createSearchBar({
    barColor : '#000',
    showCancel : true,
    height : 43,
    top : 0,
});

search.addEventListener('change', function(e) {
    // Set the last row filter to the current search value
    magicRow.filter = e.source.value;//
    //table.updateRow(rows.length - 1, magicRow,{animationStyle:Ti.UI.iPhone.RowAnimationStyle.NONE}); <- Should work but flickers
    // setting the data seems to work better
    table.data = rows;
});

var table = Ti.UI.createTableView({
    data : rows,
    filterAttribute : 'filter',
    search : search
});

这是在使用Titanium SDK 2.0.1.GA2的iOS上测试的