фильтровать элементы с помощью jsRender? - PullRequest
0 голосов
/ 11 февраля 2020

Мне не удается настроить фильтрацию для работы с 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>

1 Ответ

0 голосов
/ 12 февраля 2020
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/

...