我使用Knockout,我的问题是我似乎无法呈现Selectpicker。我会跳到一些代码中,以帮助自己解释。
脚本:
<script src="~/scripts/jquery-3.1.1.js"></script>
<script src="~/Scripts/knockout-3.4.2.js"></script>
<script src="~/Scripts/moment.js"></script>
<script src="~/Scripts/knockout.mapping-latest.js"></script>
<script src="~/Scripts/bootstrap-select.min.js"></script>
的CSS
<link rel="stylesheet" href="~/Content/bootstrap-select.min.css">
这是我需要渲染下拉框的脚本。
$(document).load(function () {
$(".selectpicker").selectpicker({
liveSearch: true,
showSubtext: true
});
});
这是我用来获取对象并将它们绑定到View的Ajax。
$.ajax({
type: "GET",
url: "@Url.Action("GetView", "Medarbejders", new {area = "" , id = ViewBag.id})",
}).done(function (data) {
$(data).each(function (index, element) {
var mappedItem =
{
Id: ko.observable(element.Id),
MedarbejderId: ko.observable(element.MedarbejderId),
Mode: ko.observable("edit")
};
console.log(mappedItem);
viewModel.lookupCollection.push(mappedItem);
});
ko.applyBindings(viewModel);
// Here is where i think i would need to Render the script. But getting an Error see futher down.
});
});
带我到我的模板。
<tbody data-bind="foreach: lookupCollection">
<tr data-bind="template: { name: Mode, data: $data }"></tr>
</tbody>
</table>
<script type="text/html" id="display">
<td data-bind="text: MedarbejderId"></td>
<td>
<button class="btn btn-success kout-edit">ændre</button>
<button class="btn btn-danger kout-delete">slet</button>
</td>
</script>
<script type="text/html" id="edit">
<td><u>Medarbejder</u><br />@Html.DropDownList("MedarbejderId", (SelectList)ViewBag.MedarbejderId, "Vælg medarbejdere", htmlAttributes: new
{
@data_bind = "value: MedarbejderId",
@class = "selectpicker form-control",
data_show_subtext = "true",
data_live_search = "true"
})
</td>
如果我使用开发人员工具检查我的页面,我在控制台中得到错误“.selectpicker不是jquery中的函数”有人可以帮助我吗?最近几天一直坐在这个错误中。
当放入渲染脚本时,这就是我得到的错误。
Uncaught TypeError: $(...).selectpicker is not a function
的jsfiddle: http://jsfiddle.net/7RDc3/5854/
如果添加换行符,则selectpicker不起作用。
答案 0 :(得分:1)
只需将其添加到addGifts
函数内:
self.addGift = function() {
self.gifts.push({
name: "",
price: ""
});
$(".selectpicker:visible").selectpicker({
liveSearch: true,
showSubtext: true
});
};
$(".selectpicker:visible")
只会初始化尚未初始化的选择选择器,即。可见。
答案 1 :(得分:0)
<script src="~/scripts/jquery-3.1.1.js"></script>
让你感到高兴
已经将jquery添加到您的布局中
@Scripts.Render("~/bundles/jquery")
<script src="~/scripts/filename.js"></script>
那样添加你的js文件,而是将它们添加到 BundleConfig 中,如下所示:bundles.Add(new ScriptBundle("~/bundles/jquery").Include("~/Scripts/path-to-your-js/jsname.js"));
并使用它们:
@section Scripts{ @Scripts.Render("~/bundles/jsbundlename") <script type="type= text/javascript"> //js-code</script>}
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/bootstrap.css";
并使用它们:@section Styles{ @Styles.Render("~/bundles/cssbundlename")}