jQuery Mobile Filterable 是 jQuery Mobile 提供的一种用于过滤列表的UI组件,refresh()方法是其中的一个重要API。下面是refresh()方法的详细攻略。
概述
refresh()方法用于在 Filterable 组件内容发生变化后,重新渲染(Filterable)页面,将变化反映到UI上。在列表数据动态更新、或者数据变化之后,我们通过调用 Filterable 的 refresh()方法,可以更新UI,实现数据与表现的同步。
方法API
refresh()方法有以下参数:
参数 | 类型 | 描述 |
---|---|---|
option | string | 可选。用于刷新页面,可接受以下选项:{“ui”, “listview”}。默认为 “ui”。 |
示例说明
我们使用两个示例,展示 Filterable 的 refresh()方法的具体使用。
示例1:使用refresh()方法更新页面
HTML代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Filterable refresh()方法示例1</title>
<link rel="stylesheet" href="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<script>
$(document).on("pagecreate", "#page1", function() {
$("#filterable1").on("filterablebeforefilter", function(e, data) {
var $ul = $(this),
$input = $(data.input),
value = $input.val(),
html = "";
$ul.html("");
if (value && value.length > 2) {
$ul.html("<li>没有匹配结果,请重新输入</li>");
$ul.listview("refresh");
} else {
var tmp = "<li><a href='#'>{itemName}</a></li>",
items = ["C", "C++", "C#", "Java", "JavaScript", "Python"];
$.each(items, function (index, value) {
html += tmp.replace("{itemName}", value);
});
$ul.html(html);
$ul.listview("refresh");
$ul.trigger("updatelayout");
}
});
});
</script>
</head>
<body>
<div data-role="page" id="page1">
<div data-role="filterable">
<input id="input1" data-type="search">
<ul id="filterable1" data-role="listview" data-inset="true">
</ul>
</div>
</div>
</body>
</html>
上述代码创建了一个 Filterable 组件,页面初始化时,我们通过 refresh()方法来更新 Filterable 组件的UI效果。
示例2:使用refresh()方法显示隐藏列表
HTML代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Filterable refresh()方法示例2</title>
<link rel="stylesheet" href="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<script>
$(document).on("pagecreate", "#page2", function() {
var filterable = $("#filterable2");
$("#filter-input2").on("keyup", function() {
var value = $(this).val();
if (value) {
filterable.find("li").hide();
filterable.find("li:contains(" + value + ")").show();
} else {
filterable.find("li").show();
}
filterable.filterable("refresh");
});
});
</script>
</head>
<body>
<div data-role="page" id="page2">
<div class="ui-field-contain">
<input id="filter-input2" data-type="search" placeholder="输入关键词过滤列表">
</div>
<div data-role="filterable">
<ul id="filterable2">
<li>苹果</li>
<li>香蕉</li>
<li>橘子</li>
<li>橙子</li>
<li>石榴</li>
<li>火龙果</li>
<li>葡萄</li>
<li>西瓜</li>
</ul>
</div>
</div>
</body>
</html>
上述代码创建了一个搜索输入框,以及一个列表。当用户输入关键词时,列表中与输入框中的关键词匹配的项目将被显示,不匹配的项目将被隐藏。我们使用 refresh()方法来更新 Filterable 组件,以实现UI的更好反映。
结论
Filterable 的 refresh()方法可以用于更新 Filterable 编辑后的内容,并将更改反映到UI中。refresh()方法可以接受参数,以控制特定的组件更新。在实际开发中,我们可以根据业务需求来使用refresh()方法,以达到实现过滤列表、或者根据用户输入筛选列表的需求。