将javascript三元运算符与敲除安全绑定一起使用时出错

将javascript三元运算符与敲除安全绑定一起使用时出错,javascript,knockout.js,Javascript,Knockout.js,当我与ko一起使用时,我尝试在数据绑定中使用三元运算符,会出现一个错误 示例代码: <div data-bind="attr: { class: itemSelected() ? 'selected' : 'unselected' }"></div>​ 错误: Uncaught #<Object> knockout-secure-binding.js: 4 Uncaught#knockout-secure-binding.js:4 如果我使用常规活页夹,

当我与ko一起使用时,我尝试在数据绑定中使用三元运算符,会出现一个错误

示例代码:

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

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

如果我使用常规活页夹,不包括安全活页夹,一切都会按预期进行。为什么会这样?要继续使用安全绑定,我可以做些什么?

很自然,它不起作用。如果您看到的expressions部分是在使用安全绑定绑定器时可以在数据绑定中使用的语言,那么您将看到三元运算符不在列表中

您必须使用计算该表达式的or,并绑定计算结果而不是表达式

计算的结果可能如下所示:

self.selClass = ko.pureComputed(function() {
    return self.itemSelected() ? 'selected' : 'unselected';
}, self);
注意:您可以使用纯计算的。此示例显示了使用
self=This
模式的构造函数创建视图模型的情况。如果对视图模型使用其他模式(如RMP),则计算结果将略有不同

那么,约束就是这个:

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

哪个是有效的
sbind
表达式。

有什么问题?作为一个问题,这是没有意义的。问题是我正在使用knockout安全绑定。如果将
数据绑定
更改为
数据绑定
会发生什么情况?另外,请说明如何初始化ksb@ArdenLatraca是的,很明显。但这不是问题,而是sbind的规范。请看我的答案,这是一个很好的选择。忘了计算机是怎么工作的了,哈哈。谢谢@JotaBe@Alex感谢您的“公平竞争”和评论;)OP真的需要它!!
<div data-bind="attr: { class: selClass }"></div>​