我正在尝试使用 bootstrap 2.2.2 typeahead,根据文档可以将其配置为 Source 选项的某些功能。
$('#test').typeahead({
source: function (query, process) {
return $.get('@Url.Action("Search")', { query: query }, function (data) {
return process(data);
});
}
});
这就是我正在尝试的。
我的服务器端有简单的动作
public ActionResult Search(string query)
{
var teamMembers = new List<String>();
for (int i = 1; i < 21; i++)
{
var teammember = "john doe + ( " + i +" )";
teamMembers.Add(teammember);
};
return new JsonResult()
{
Data = teamMembers.ToArray(),
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
没有比这更简单的了,但我的“搜索”操作根本没有受到影响。如果有人可以指导我做错了什么,TypeAhead 如何通过某些异步设置的 Source 来精确调用控制器 Action。仅使用 bootstrape 2.2.2 本机组件的功能。如果需要任何澄清,请告诉我。
静态数据工作得很好,所以显然这里没有我丢失的文件。您也可以在下面的标记中看到。
<input type="text" data-provide="typeahead"
data-source='["Deluxe Bicycle", "Super Deluxe Trampoline", "Super Duper Scooter"]'>
PS 请不要提及任何 typeahead 分叉,我只是想知道 twitter bootstrap 2.2.2 本机 typeAhead 功能。
更新:完整代码 HomeController
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult TypeAhead(string query)
{
var teamMembers = new List<String>();
for (int i = 1; i < 21; i++)
{
var teammember = "john doe + ( " + i +" )";
teamMembers.Add(teammember);
};
return new JsonResult()
{
Data = teamMembers.ToArray(),
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
}
我当前的视图标记。
<script src="~/Scripts/jquery-1.7.1.js"></script>
<script src="~/Scripts/bootstrap.js"></script>
<link href="~/Content/bootstrap.css" rel="stylesheet" />
<script type="text/javascript">
$(document).ready(function() {
$('#testSearch').typeahead({
source: function (query, process) {
$.get('@Url.Action("TypeAhead")', { query: query }, function(data) {
process(data);
});
}
});
});
</script>
<ol class="round">
<li class="three">
<input id="testSearch" data-provide="typeahead" >
</li>
</ol>