Bri*_*unt 4 knockout-2.0 knockout.js
我正在尝试创建一个包装现有绑定的自定义绑定,即Knockout中内置的"with"或"foreach"绑定.
不幸的是,这样做我得到以下错误:Uncaught TypeError: Cannot call method 'createChildContext' of undefined来自knockout-latest.debug.js:3060(问题也出现在2.1.0版本上).
我已经使用Google Chrome 21.0.1180.57 在jsFiddle上复制了例外.
自定义绑定简单定义如下:
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);
}
};
Run Code Online (Sandbox Code Playgroud)
人们可以期望能够使用上面的表单中的简单处理程序"包装"现有绑定,就像本文中讨论的那样.
RP *_*yer 12
在KO 2.0中,绑定处理程序实际上接受第5个参数,即绑定上下文.结合上下文保存之类的东西$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);
}
};
Run Code Online (Sandbox Code Playgroud)
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);
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1174 次 |
| 最近记录: |