从淘汰赛文档:
ko.bindingHandlers.<name>.preprocess(value, name, addBindingCallback)
参数:
value : ...
name : ...
addBinding:一个回调函数,您可以选择使用它在当前元素上插入另一个绑定。这需要两个参数,名称和值。例如,在您的 preprocess 函数中,调用addBinding('visible', 'acceptsTerms()');
以使 Knockout 的行为就好像该元素具有visible: acceptsTerms()
绑定一样。
例如,我们可以有如下绑定:
ko.bindingHandlers.live = {
preprocess: function (str, name, addBindingCallback) {
addBindingCallback('value', str);
addBindingCallback('valueUpdate', "'afterkeydown'")
}
};
// Or
ko.bindingHandlers.log = {
preprocess: function (str, name, addBindingCallback) {
addBindingCallback('click', "function(){console.log('test');}");
}
};
我的问题:
是否可以将方法范围内的变量传递preporcess
给新添加的绑定?
ko.bindingHandlers.log = {
preprocess: function (str, name, addBindingCallback) {
// an object which is not in my viewmodel and context
var $scoped_obj = get_from_some_external_service(str);
// i want to pass `$scoped_obj` to the newly added click binding
addBindingCallback('click', "function(){console.log($scoped_obj);}");
}
};
那可能吗 ?如何 ?