如何实现可以在对象文字中声明的多个自定义挖空绑定?
基本上不是这样做的:
<input data-bind="customBinding1:observable1, customBinding2: observable2 }" />
我希望能够做到这一点:
<input data-bind="customBinding0: { customBinding1: observable1, customBinding2: observable2 }" />
提前感谢。
答案 0 :(得分:0)
使用Knockout,绑定在名称/值对中指定,其中name
是绑定的名称,value
是使用valueAccessor()
在绑定中检索的值
听起来您可能想要将多个值传递给绑定,就像您的剑道示例所示。虽然每个绑定只能有一个值,但该值可以是任何值。这意味着您可以将对象文字作为值传入,并且该对象可以包含任意数量的属性。这些属性也可以是您想要的任何类型 - 您只需要在绑定中正确处理它们。
这是一个简单的例子:
查看强>
<div data-bind="myBinding: {setting1: viewModelProperty1,
setting2, viewModelProperty2}"></div>
<强>装订强>
ko.bindingHandlers.myBinding = {
init: function(element, valueAccessor) {
var options = valueAccessor() || {};
//this gives you the value of setting1
var setting1 = ko.utils.unwrapObservable(options.setting1);
//if you need to do something just when `setting1` changes,
// add a subscription to the value like so:
if( ko.isObservable(options.setting1) ){
options.setting1.subscribe(function(newValue){
//do something because the setting1 value changed
});
}
}
};
您还可以选择指定多个绑定,每个绑定都有自己的值,并引用第一个绑定中的附加绑定和值。 Knockout的options
和optionsText
绑定就是这种方法的一个例子。
优秀资源: http://www.knockmeout.net/2011/07/another-look-at-custom-bindings-for.html
请花一些时间在上面的链接中学习和试验示例。这里有很多很好的信息,涵盖了你需要做的事情。