私はjQueryUISelectMenuプラグイン(https://github.com/fnagel/jquery-ui)を使用していますが、それが許可するものの1つは、リストアイテムをレンダリングする方法の「フォーマット」です。次のように説明されます。
format:null、任意のレベルの操作で操作および返すことができる単一の引数を持つ関数を受け入れます
だから私の質問は-ノックアウトテンプレートを関数として返して、このテンプレートをレンダリングソースとして使用できるようにするにはどうすればよいですか?
これもおもちゃにできるフィドルですが、コードの一部も含まれています
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でテンプレートを呼び出して、それをformatパラメーターとして渡そうとしていますが、明らかに機能しません。
<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>