gpt4 book ai didi

Knockout.js - 无法包装 'with' 、 'foreach' 和其他模板绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 22:22:49 25 4
gpt4 key购买 nike

我正在尝试创建一个包含现有绑定(bind)的自定义绑定(bind),即内置于 Knockout 中的“with”或“foreach”绑定(bind)。

不幸的是,这样做我得到以下错误:Uncaught TypeError: Cannot call method 'createChildContext' of undefined来自 knockout-latest.debug.js:3060 (该问题也出现在 2.1.0 版上)。

我转载了exception on jsFiddle ,使用谷歌浏览器 21.0.1180.57。

自定义绑定(bind)简单定义如下:

ko.bindingHandlers.myWith = {
init: function(element, valueAccessor, allBindings, viewModel) {
// do things
return ko.bindingHandlers.with.init(element, valueAccessor,
allBindings, viewModel);
},

update: function(element, valueAccessor, allBindings, viewModel) {
return ko.bindingHandlers.with.update(element, valueAccessor,
allBindings, viewModel);
}
};

人们希望能够使用上面表格中的简单处理程序“包装”现有绑定(bind),很多 like it is discussed in this article .

最佳答案

在 KO 2.0 中,绑定(bind)处理程序实际上接受了第 5 个参数,即绑定(bind)上下文。绑定(bind)上下文包含 $data 之类的内容。 , $parent , $parents , $root .

因此,您只需要转发该参数即可:

ko.bindingHandlers.myWith = {
init: function(element, valueAccessor, allBindings, viewModel, context) {
// do things
return ko.bindingHandlers.with.init(element, valueAccessor,
allBindings, viewModel, context);
},

update: function(element, valueAccessor, allBindings, viewModel, context) {
return ko.bindingHandlers.with.update(element, valueAccessor,
allBindings, viewModel, context);
}
};

http://jsfiddle.net/rniemeyer/48uJg/2/

或者
ko.bindingHandlers.myWith = {
init: function() {
return ko.bindingHandlers.with.init.apply(this, arguments);
},

update: function() {
return ko.bindingHandlers.with.update.apply(this, arguments);
}
};

关于Knockout.js - 无法包装 'with' 、 'foreach' 和其他模板绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11868585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com