Tri*_*Gao 0 javascript data-binding user-interface web knockout.js
所以我想为模板绑定创建一个快捷方式,如下所示:
ko.bindingHandlers.shortcut = {
init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
var data = valueAccessor();
var nextValueAccessor = function () {
return { name: 'someTemplate', data: data };
};
ko.bindingHandlers.template.init.call(this, element, nextValueAccessor, allBindings, viewModel, bindingContext);
}
}
Run Code Online (Sandbox Code Playgroud)
HTML:
<div data-bind="shortcut: 'Hey!'"></div>
<script type="text/html" id="someTemplate">
<div data-bind="text: $data"></div>
</script>
Run Code Online (Sandbox Code Playgroud)
定义了"someTemplate"模板.只是没有说什么就行不通.我在这做错了什么?
您的问题基本上是您没有调用update模板绑定的功能.您可能会发现使用稍微不同的方法来包装绑定更容易,因此您只需使用该init功能:
ko.bindingHandlers.shortcut = {
init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
ko.applyBindingAccessorsToNode(element, {
template: function() {
return {
name: 'someTemplate',
data: valueAccessor()
};
}
}, bindingContext)
return { controlsDescendantBindings: true };
}
};
Run Code Online (Sandbox Code Playgroud)
示例:http://jsfiddle.net/rniemeyer/RXu9t/
如果您仍在使用KO 2.x,那么您可能希望使用ko.applyBindingsToNode如下:
ko.applyBindingsToNode(element, {
template: {
name: 'someTemplate',
data: valueAccessor()
}
}, bindingContext);
Run Code Online (Sandbox Code Playgroud)
示例:http://jsfiddle.net/rniemeyer/79yG8/
| 归档时间: |
|
| 查看次数: |
533 次 |
| 最近记录: |