什么被认为是处理大量自定义绑定的好方法,可能没有绑定?假设我的html表达式绑定到image_url,如下所示.
<span title="Company Logo" data-bind="image_url: company_banner"></span>
Run Code Online (Sandbox Code Playgroud)
但是,有可能image_url绑定不可用.在这种情况下,我只想返回一个字符串值company_banner.
通常会添加一个自定义处理程序,如下所示,但如果该处理程序不可用,我们可以返回一些通用反馈吗?
ko.bindingHandlers.buttonLabel = {//update etc}
Run Code Online (Sandbox Code Playgroud)
在我们的例子中,设计可能在代码之前,所以我们不希望ko发牢骚.
对于这种情况,我会考虑使用自定义绑定提供程序.这是一篇描述功能的文章:http://www.knockmeout.net/2011/09/ko-13-preview-part-2-custom-binding.html.
所以,我会创建一个自定义绑定提供程序,它是真正的绑定提供程序的包装器.一旦解析了绑定,我们就可以检查它们是否存在ko.bindingHandlers.如果没有,那么我们可以添加文本绑定及其值.
它可能看起来像:
ko.lenientBindingProvider = function() {
var realBindingProvider = new ko.bindingProvider();
this.nodeHasBindings = realBindingProvider.nodeHasBindings;
this.getBindings = function(node, bindingContext) {
//parse the bindings with the real binding provider
var result = realBindingProvider.getBindings(node, bindingContext);
//inspect the returned bindings
for (var binding in result) {
if (result.hasOwnProperty(binding) && binding !== "_ko_property_writers" && !ko.bindingHandlers[binding]) {
//add a text binding with whatever the missing binding was bound against
result.text = result[binding];
}
}
return result;
};
};
ko.bindingProvider.instance = new ko.lenientBindingProvider();
Run Code Online (Sandbox Code Playgroud)
以下是一个示例:http://jsfiddle.net/rniemeyer/mMQKY/
| 归档时间: |
|
| 查看次数: |
2445 次 |
| 最近记录: |