Knockout.js Knockout js使用Knockout安全绑定在click数据绑定中传递参数
我尝试在我的knockout js上实现ksb,但是在onClick绑定中传递参数时会导致错误 我用了这句话:Knockout.js Knockout js使用Knockout安全绑定在click数据绑定中传递参数,knockout.js,Knockout.js,我尝试在我的knockout js上实现ksb,但是在onClick绑定中传递参数时会导致错误 我用了这句话: <button type="button" data-bind="click: btnClick.bind($data, '1')">button</button> 按钮 它将抛出一个错误: Uncaught #<Object> knockout-secure-binding.js: 440 Uncaught#knockout-secure-b
<button type="button" data-bind="click: btnClick.bind($data, '1')">button</button>
按钮
它将抛出一个错误:
Uncaught #<Object> knockout-secure-binding.js: 440
Uncaught#knockout-secure-binding.js:440
如何在onClick绑定上传递param?说明(特别注意#3,粗体添加):
绑定中的KSB中使用的语言是JSON的超集,但不是
Javascript的子集。例如,我将称之为sbind语言
方便
Sbind语言比Javascript更接近于JSON,因此更容易理解
通过将其与JSON进行比较来描述其差异。斯宾德语
与JSON的不同之处在于:
未定义的
关键字李>
$data
或$context
或globals(按该顺序)上查找变量李>
this
设置为具有以下键的对象:$data
,$context
,globals,$element
,对应
到相应元素绑定的状态ko.bindingHandlers.curry = {
unwrap: function (valueAccessor, data) {
var val = valueAccessor(),
theFunction = data[val[1].token];
return {
bh: ko.bindingHandlers[val[0]],
fnVa: function () {
return theFunction.apply.bind(theFunction, theFunction, val.slice(2));
}
};
},
init: function (element, valueAccessor, allBindingsAccessor, data, context) {
var spec = ko.bindingHandlers.curry.unwrap(valueAccessor, data),
init = spec.bh.init;
if (init) {
init(element, spec.fnVa, allBindingsAccessor, data, context);
}
},
update: function (element, valueAccessor, allBindingsAccessor, data, context) {
var spec = ko.bindingHandlers.curry.unwrap(valueAccessor, data),
update = spec.bh.update;
if (update) {
update(element, spec.fnVa, allBindingsAccessor, data, context);
}
}
};
像这样使用它:
<button type="button" data-bind="curry:['click', btnClick, '1', '2']">short</button>
short
.不!这种情况不应该发生,请检查这里的样品。任何你能复制它的机会都可能与
knockout secure binding.js
有关。是的,没有knockout secure binding它就不会有问题。但遗憾的是,出于安全原因,我正在实施它。我想传递参数来优化我的点击绑定@supercolany chance的使用?可以用小提琴复制你的案例。我可以进一步帮助你,因为事情在上面的小提琴顺利你需要保留一些东西来显示你的问题。或者,您甚至可以使用click:function(){btnClick('1')}
@supercool这里有一把小提琴来演示这个问题。完全正确这里的参考讨论