将我的代码库升级到Knockout 3.0.0时,以下代码不再有效。任何人都可以提供解决方法吗?
引用模板的代码:
<div data-bind="clientFormItemTemplate: {foreach: clients}"/>
模板代码:
<script type="text/html" id="clientFormItemTemplate">
<li>
<div style="float: left; padding-left: 5px;">
<span class="font-normal" data-bind="text: displayName"></span>
</div>
<div class="clear"/>
</li>
</script>
模板的自定义绑定处理程序:
ko.bindingHandlers.clientFormItemTemplate = {
init: function(element, valueAccessor, allBindingsAccessor, viewModel, context)
{
return ko.bindingHandlers.template.init.apply (this, arguments);
},
update: function(element, valueAccessor, allBindingsAccessor, viewModel, context)
{
return (ko.bindingHandlers.template.update.apply (this, arguments));
}
}
答案 0 :(得分:0)
我认为您缺少name
绑定的template
属性。您可以将其添加到自定义绑定中,如下所示:
ko.bindingHandlers.clientFormItemTemplate = (function() {
function getModifiedValue(valueAccessor) {
return function() {
var value = valueAccessor();
value.name = 'clientFormItemTemplate';
return value;
};
}
return {
init: function(element, valueAccessor, allBindingsAccessor, viewModel, context) {
return ko.bindingHandlers.template.init(element, getModifiedValue(valueAccessor), allBindingsAccessor, viewModel, context);
},
update: function(element, valueAccessor, allBindingsAccessor, viewModel, context) {
return ko.bindingHandlers.template.update(element, getModifiedValue(valueAccessor), allBindingsAccessor, viewModel, context);
}
};
})();
这是一个工件JSFiddle(使用Knockout 3.0.0)。