我正在使用 jQuery UI SelectMenu 插件(https://github.com/fnagel/jquery-ui),它允许的一件事是它呈现列表项的方式的“格式”。描述如下;
format : null, 接受一个带有单个参数的函数,该参数可以通过您想要的任何级别的操作来操作和返回
所以我的问题是 - 我如何才能将 Knockout 模板作为函数返回,以便我可以使用该模板作为渲染源?
这是一个你也可以玩弄的小提琴,但我也包括了一些代码
jsFiddle
这基本上就是我的 viewModel 的样子;
$(document).ready(function(){
function User(id, name, points) {
this.Id = ko.observable(id);
this.Name = ko.observable(name);
this.Points = ko.observable(points);
}
var viewModel = {
Users: ko.observableArray([
new User("users/1", "Stacey", 27),
new User("users/2", "Ciel", 30)
]),
Selected: ko.observable()
};
ko.applyBindings(viewModel);
$template = $('#user-template');
$('select').selectmenu({
format: $template
});
});
和匹配的 HTML - 请注意我有一个模板,我预计将绑定到User
. 我试图在我的 JavaScript 中调用模板并将其作为格式参数传递 - 但它显然不起作用。
<select id="users"
data-bind="options: Users,
optionsCaption: 'select a user...',
optionsText: 'Name',
value: Selected,
valueUpdate: blur">
</select>
<span data-bind="with: Selected">
<div data-bind="text: Name"></div>
<div data-bind="text: Id"></div>
</span>
<script type="text/html" id="user-template">
<h1 data-bind="text: Id"></h1>
<h3 data-bind="text: Name"></h3>
</script>
</p>