Knockout.js 不带模板的数组元素的敲除绑定只能单向工作

Knockout.js 不带模板的数组元素的敲除绑定只能单向工作,knockout.js,Knockout.js,有人能帮我更好地理解绑定到可观察数组元素而不使用模板吗 我有一个表,其中包含的数据多于我试图从数组中呈现的数据。我的数组是固定大小的,所以为了避免布局的挑战,我想将输入框直接绑定到数组元素。我可以让它单向绑定到视图,但无法识别更新。这是我的样本: 我尝试使每个元素都可观察到,但没有成功,但我得到了相同的结果。访问数组项的语法导致Knockout在单向绑定的值发生更改时(它认为它是一个表达式,不可写)不创建回调来更新该值。例如,如果您执行以下操作,它将正常工作: viewModel.test =

有人能帮我更好地理解绑定到可观察数组元素而不使用模板吗

我有一个表,其中包含的数据多于我试图从数组中呈现的数据。我的数组是固定大小的,所以为了避免布局的挑战,我想将输入框直接绑定到数组元素。我可以让它单向绑定到视图,但无法识别更新。这是我的样本:


我尝试使每个元素都可观察到,但没有成功,但我得到了相同的结果。

访问数组项的语法导致Knockout在单向绑定的值发生更改时(它认为它是一个表达式,不可写)不创建回调来更新该值。例如,如果您执行以下操作,它将正常工作:

viewModel.test = viewModel.recipients()[0];
然后做了:

<input data-bind="value: test.emailAddress"/>

因此,您的场景说明这是淘汰赛中的一个问题。这也可以在模板绑定中正常工作,或者如果您不想使用模板绑定,那么它也可以正常工作,使
emailAddress
成为可观察的

它看起来像:


因此,您可以将emailAddress设置为构造函数中的可观察值,并且您的警报需要将可观察值作为函数进行访问。

@RP Niemeyer:很好的示例。只是一件小事:JSFIDLE上的脚本不起作用,因为它缺少对淘汰脚本的引用。以下是工作版本: