Как вы обнаружили, собственный шаблонизатор не поддерживает templateOptions
, который был оболочкой для функциональности options
плагина jQuery Template.
Два способа, которыми вы могли бы воспользоваться: разместить свои данные намодель вашего представления и используйте $root.fooMode
или $parent.fooMode
внутри вашего шаблона.Это будет самый простой вариант.
В противном случае, если вам не нужно значение в вашей модели представления, вы можете использовать настраиваемую привязку для управления контекстом, например:
ko.bindingHandlers.templateWithOptions = {
init: ko.bindingHandlers.template.init,
update: function(element, valueAccessor, allBindingsAccessor, viewModel, context) {
var options = ko.utils.unwrapObservable(valueAccessor());
//if options were passed attach them to $data
if (options.templateOptions) {
context.$data.$item = ko.utils.unwrapObservable(options.templateOptions);
}
//call actual template binding
ko.bindingHandlers.template.update(element, valueAccessor, allBindingsAccessor, viewModel, context);
//clean up
delete context.$data.$item;
}
}
Вот пример использования: http://jsfiddle.net/rniemeyer/tFJuH/
Обратите внимание, что в сценарии foreach
вы найдете свои варианты на $parent.$item
, а не на $item
.