Javascript Knockoutjs:Can';t包装';更新';在检查绑定时,如何在更新时运行js?
我正在使用KnockoutJS3.0,我正在尝试创建一个“checked”绑定的包装版本。我希望它只需在选中的值更改后执行Javascript Knockoutjs:Can';t包装';更新';在检查绑定时,如何在更新时运行js?,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我正在使用KnockoutJS3.0,我正在尝试创建一个“checked”绑定的包装版本。我希望它只需在选中的值更改后执行$.scrollto()。我现在只是尝试包装绑定,没有任何其他行为: ko.bindingHandlers.checkedWithPostScroll = { init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) { //Do ex
$.scrollto()
。我现在只是尝试包装绑定,没有任何其他行为:
ko.bindingHandlers.checkedWithPostScroll = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
//Do extra UI stuff here
ko.bindingHandlers.checked.init(element, valueAccessor,allBindingsAccessor, viewModel, bindingContext);
}
};
我开始包装“update”,但发现选中的绑定没有“update”,所以我改为包装“init”。但init中的代码只触发一次。如何重写此绑定,以便每次检查元素时,都会运行一些javascript
下面是一个JSFIDLE:
我希望在每次选中或取消选中某个元素时都显示警报框
问题的第二部分:有没有办法在绑定目标(特别是要滚动到的dom元素的id)上向绑定传递额外的一位信息?比如:
谢谢。。。
-本
-Ben实现这一点的另一种方法是在您绑定的可观察(或可观察)上订阅更改通知。这就是我的结局:
self.selectedColors = ko.observableArray();
self.selectedColors.subscribe(function (changes) {
if (changes[0].status === 'added' && self.selectedColors().length == 1)
setTimeout(function () {
$('html, body').animate({
scrollTop: $("#NextSection").offset().top
}, 1000);
}, 200);
}, null, "arrayChange");
不使用自定义绑定,但可以工作。请发布一个JSFIDLE。很抱歉造成混淆。我找到了与我原来的问题相对应的问题,并已将其清理干净。以上反映了这一点。
self.selectedColors = ko.observableArray();
self.selectedColors.subscribe(function (changes) {
if (changes[0].status === 'added' && self.selectedColors().length == 1)
setTimeout(function () {
$('html, body').animate({
scrollTop: $("#NextSection").offset().top
}, 1000);
}, 200);
}, null, "arrayChange");