Я использую шаблон повторения Dart Polymer, чтобы показать элементы списка. Теперь я хотел бы реализовать фильтр поиска, в котором отображаются только элементы, относящиеся к введенному запросу. Рассмотрим следующий код:
my-element.html
<polymer-element name="my-element">
<script type="application/dart" src="my-element.dart"></script>
<template>
<input type="text" value="{{ searchTerm }}">
<ul>
<template repeat="{{ item in items }}">
<template if="{{ matchesSearchFilter(item) }}">
<li>{{ item }}</li>
</template>
</template>
</ul>
</template>
</polymer-element>
my-element.dart
@CustomTag('my-element')
class MyElement extends PolymerElement {
@observable List<String> items = toObservable(["Monday", "Tuesday", "Wednesday"]);
@observable String searchTerm = '';
MyElement.created() : super.created();
matchesSearchFilter(String item) {
if (searchTerm.isEmpty) return true;
return item.toLowerCase().contains(searchTerm.toLowerCase());
}
}
Например, когда я набираю «Пн» в текстовое поле, я ожидаю, что список элементов обновится автоматически, так что будет отображаться только «Понедельник». Однако при вводе любого поискового запроса список остается прежним, а поисковый запрос игнорируется.
Итак, как правильно реализовать такую функцию?
searchTerm
и вызывается лиmatchesSearchFilter
? - person Günter Zöchbauer   schedule 27.01.2014searchTerm
установлен правильно.matchesSearchFilters
вызывается при первой визуализации списка (но не при измененииsearchTerm
). - person melmac   schedule 27.01.2014