首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RactiveJS:基于文本输入值过滤DIV元素

RactiveJS:基于文本输入值过滤DIV元素
EN

Stack Overflow用户
提问于 2014-02-04 07:18:09
回答 2查看 1K关注 0票数 0

我一直试图找到一个例子,说明如何使用RactiveJS根据搜索文本框过滤div容器。

我知道如何使用RActive获取按下的键事件,但不确定如何以RactiveJS方式过滤模型。在关键新闻事件期间保存数据副本/历史似乎是个坏主意。我在这里错过了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-04 17:59:09

您可以让Ractive (http://jsfiddle.net/nnbww/):

代码语言:javascript
复制
<div id="container">
  <input name="search" type="text" value="{{searchTerm}}"/>
  {{#items}}
     {{#(..indexOf(searchTerm)===0)}}
         <div>{{.}}</div>
     {{/}}
 {{/items}}
</div>

如果您愿意的话,可以使用this而不是.

代码语言:javascript
复制
{{# this.indexOf(searchTerm)===0 }}

并将该函数放在数据上,而不是内联:

代码语言:javascript
复制
{{# filter(this) }}

这将允许您更改过滤器以及。关于这方面的一个很好的例子,请查看http://examples.ractivejs.org/todos

如果您需要跟踪有关筛选列表的其他信息(例如,显示匹配项的计数),则使用纯粹的反应性方法(参见上述jsfiddle的version /1/ )要困难一些,这可能使使用观察者变得更简单:

代码语言:javascript
复制
 <input name="search" type="text" value="{{searchTerm}}"/>
 {{#filtered}}
     <div>{{.}}</div>
 {{/filtered}}
 Matching {{filtered.length}} of {{items.length}}

以完整的方法设置:

代码语言:javascript
复制
var ractive = new Ractive({
    el: 'container',
    template: '#container',
    data: { 
        searchTerm: 'foo',
        items: [ 'foo', 'bar', 'biz', 'bah' ]
    },
    complete: function(){
        var r = this
        r.observe('searchTerm', function(search){
            var filtered = r.get('items').filter(function(item){
                return item.indexOf(search)===0
            })
            r.set('filtered', filtered)
        })
    }
})

(见jsfiddle链接的版本/2/ )

票数 4
EN

Stack Overflow用户

发布于 2014-02-04 10:34:03

如果可搜索的div是静态的,那么可以在搜索项上添加一个观察者:http://jsfiddle.net/fLd86/10/

代码语言:javascript
复制
ractive = new Ractive({
el: 'container',
template: '#container',
data: { searchTerm: 'foo' }
});

observer = ractive.observe( 'searchTerm', function ( newValue, oldValue, keypath ) {
    $( 'div.searchable:contains("' + newValue +'")').show();
    $( 'div.searchable:not(:contains("' + newValue +'"))').hide();
});

如果div是您的模型的一部分,您需要在模板中添加一些东西来将它们注入到html中,但是同样的逻辑应该可以工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21546255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档