Knockout.js 在foreach循环中添加基于索引的条件属性

Knockout.js 在foreach循环中添加基于索引的条件属性,knockout.js,Knockout.js,如果我这样做: data-bind="attr: {'id': $index}" 超过ID为0、1、2。。。但如果我这样做: data-bind="attr: {'id': $index>0 ? 'choice'+$index : 'choice'}" 而ID永远是“选择”,我做错了什么 它是淘汰版v3.4.2$index实际上是一个可观察的。在一个简单的绑定中,knockout将自动处理它。在更复杂的表达式中,不需要手动调用它: data-bind="attr: {'id': $in

如果我这样做:

data-bind="attr: {'id': $index}"
超过ID为0、1、2。。。但如果我这样做:

data-bind="attr: {'id': $index>0 ? 'choice'+$index : 'choice'}"
而ID永远是“选择”,我做错了什么


它是淘汰版v3.4.2

$index
实际上是一个可观察的。在一个简单的绑定中,knockout将自动处理它。在更复杂的表达式中,不需要手动调用它:

data-bind="attr: {'id': $index()>0 ? 'choice'+$index() : 'choice'}"

它们最终都只得到了
'choice'
,因为
$index>0
将始终计算为
false
,因为它将
$index
可观察函数的文本表示形式与0进行比较。此函数以
f
开始,并且
“f>0
$index
实际上是可观察的。在一个简单的绑定中,knockout将自动处理它。在更复杂的表达式中,不需要手动调用它:

data-bind="attr: {'id': $index()>0 ? 'choice'+$index() : 'choice'}"

它们最终都只得到了
'choice'
,因为
$index>0
将始终计算为
false
,因为它将
$index
可观察函数的文本表示形式与0进行比较。此函数以
f
开始,并且
f>0
false

的可能重复项,它是一个重复项,但从我的角度看,我不知道搜索什么,认为条件语法可能是错误的。可能重复项,它是一个重复项,但从我的角度看,我不知道搜索什么,我认为条件语法可能是错误的。是的,这是有意义的,它是有效的。但是我从来没有找到过关于“简单”和“复杂”绑定的文档,总是有问题:(@skobaljic只需将除自身可观察之外的任何东西(根据您的第一个示例)想象为“复杂”.我明白了,没有问题,但从来没有在文档中找到解释,这是我自己必须弄清楚的。有关于它的文档吗?上面写着:如果你只绑定observable,那么你就不需要括号了?是的,这是有道理的,而且是有效的。但我从来没有找到关于“简单”和“复杂”绑定的文档,总是有问题:(@skobaljic只需将除自身可观测之外的任何事物(根据您的第一个示例)想象为“复杂”。我明白了,没有问题,但从未在文档中找到解释,这是我必须自己思考的事情。有关于它的文档吗?有这样一句话:如果只绑定可观测,那么就不需要括号了?