gpt4 book ai didi

javascript - 使用具有 knockout 安全绑定(bind)的 javascript 三元运算符时出错

转载 作者:行者123 更新时间:2023-11-29 21:38:55 26 4
gpt4 key购买 nike

当我使用 knockout-secure-binding 时使用 ko,我尝试在数据绑定(bind)中使用三元运算符,发生错误。

示例代码:

<div data-bind="attr: { class: itemSelected() ? 'selected' : 'unselected' }"></div>​

KSB 初始化:

var options = {
attribute: "data-bind", // default "data-sbind"
globals: window, // default {}
bindings: ko.bindingHandlers, // default ko.bindingHandlers
noVirtualElements: false // default true
};
ko.bindingProvider.instance = new ko.secureBindingsProvider(options);

错误:

Uncaught #<Object> knockout-secure-binding.js: 4

如果我使用常规 Binder ,而不包括安全 Binder ,一切都会按预期进行。为什么会这样?我该怎么做才能继续使用安全绑定(bind)?

最佳答案

自然不行。如果您看到 the specs of sbind 的表达式部分, ,这是您在使用安全绑定(bind) Binder 时可以在数据绑定(bind)中使用的语言,您会看到三元运算符不在列表中。

你必须使用 computedpure computed计算该表达式,并绑定(bind)计算结果而不是表达式。

计算结果可能是这样的:

self.selClass = ko.pureComputed(function() {
return self.itemSelected() ? 'selected' : 'unselected';
}, self);

注意:您可以使用纯计算。此示例显示了使用 self=this 模式的构造函数创建的 View 模型的情况。如果您为 View 模型使用其他模式,例如 RMP,则计算结果会略有不同

所以,绑定(bind)将是这个:

<div data-bind="attr: { class: selClass }"></div>​

这是一个有效的 sbind 表达式。

关于javascript - 使用具有 knockout 安全绑定(bind)的 javascript 三元运算符时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33864474/

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