【问题标题】:filtering items with jsRender?用jsRender过滤项目?
【发布时间】:2023-04-03 23:39:01
【问题描述】:

我似乎无法使用 jsRender (https://www.jsviews.com/#fortag@filter) 进行过滤

文档声明在渲染时只传递过滤器函数,然后定义它。返回 true 显示记录,返回 false 隐藏它。

我似乎无法让它触发过滤器,它只是做自己的事情。

var htmlOutput = template.render(data, {
              myFilter: myFilterFunction
});
var htmlOutput = template.render(data);
$("#placeholder").html(htmlOutput);

function myFilterFunction(item, index, items) {
   return false;
}

我的模板:

<script id="personTemplate" type="text/x-jsrender">
<div class="row">
        <div class="" style="height:250px; overflow-y:auto;width:100%;">
            <ul class="list-group mb-3 list-fix">
                {{for tasks filter=~myFilter reverse=true tmpl="#tasksTemplate"/}}
            </ul>
        </div>
 </div>
</script>
<script id="tasksTemplate" type="text/x-jsrender">
    <li class="list-group-item list-group-item-action flex-column align-items-start">
        <div class="d-flex w-100 justify-content-between">
            <h6 class="mb-1">{{:title}}</h6>
            <small class="task">{{formatstatus:status}}</small>
        </div>
        <p class="mb-0 apt-event"><span class="badge badge-secondary">Due</span> {{formatdate:due_date}}</p>
        <small style="display:none;">{{>description}}</small>
    </li>
</script>

【问题讨论】:

    标签: jquery jsrender


    【解决方案1】:
    var htmlOutput = template.render(data, {
                  myFilter: myFilterFunction
    });
    var htmlOutput = template.render(data);
    

    您有一个没有过滤器的重复变量赋值。

    var htmlOutput = template.render(data);

    最好使用let 来解决这些问题。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let

    这里有一个演示小提琴。 https://jsfiddle.net/7u2j84ox/1/

    【讨论】:

    • 我在测试时发现了这个错误。我仍然无法让它工作。有什么方法可以调试 jsViews 中发生的事情?
    猜你喜欢
    • 2021-07-09
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 2021-01-30
    相关资源
    最近更新 更多