[英]knockoutjs: custom binding fired multiple times and on the wrong binding
[英]KnockoutJS custom binding with multiple color pickers
我刚刚开始使用knockoutJS并认为我会通过创建一个改变页面元素颜色的小程序来进行实验。 我正在为颜色选择器使用jquery频谱插件并将其附加到一个小引导输入组插件上,并在输入框旁边显示十六进制颜色。
为了改变颜色,我认为最好的办法是为颜色变化创建一个自定义绑定,它会更新observable,在本例中为'color1':
ko.bindingHandlers.changeColor = {
init : function(element, valueAccessor){
value = valueAccessor();
myColor = value;
$(element).spectrum({
beforeShow: function(color){
$(this).spectrum("set", $(this).css("background-color"));
},
move: function(color){
myColor(color.toHexString().toUpperCase());
}
});
}
};
function ColorViewModel(){
color1 = ko.observable("#FFF000");
}
ko.applyBindings(new ColorViewModel());
然后我使用了以下标记:
<div class="input-group-addon" data-bind="style : {backgroundColor : color1()}, changeColor : color1"></div>
<input type="text" class="form-control input-sm" data-bind="value: color1()" />
这工作正常,但我的问题来自于尝试添加与不同颜色可观察的颜色相关联的第二个颜色框。
现在,每个颜色选择器仅更新已绑定的最后一个颜色可观察数,而不是单独更新每个颜色可观察颜色。 我确定我错过了一些非常明显的东西,或者我对淘汰的自定义绑定误解了一些东西,但如果有人能指出我哪里出错了,我会很感激。
在这里JSFiddle:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.