根据某些条件将 JS 绑定到可观察对象内的数组元素

Knockout JS binding to an array element inside an observable object according to some condition

本文关键字:观察 对象 数组元素 绑定 条件 JS      更新时间:2023-09-26

我想绑定我的文本输入值

<input type="text" id="2" data-bind="value :  ??whatToWriteHere??    ">

到以下可观察对象中第二个对象的 name 属性(其中 input.id == object.id

myObject = {
    myArray : [ { id:1, name:'one' },{ id:2, name:'two' },{ id:3, name:'three' } ]
},
myObservableObject = ko.observable(myObject);

我应该用什么表达代替??在这里写什么??

已编辑:实际上数组不一定在另一个对象内

 myArray : [ { id:1, name:'one' },{ id:2, name:'two' },{ id:3, name:'three' } ]
 myObservableArray = ko.observableArray(myArray);

我有一个基于 ko.mapping 插件的解决方案和一个为您的目的创建的自定义绑定。

你可以在这里看到一个工作的小提琴:

http://jsfiddle.net/ingro/MhdZp/

整个想法是映射你的observableArray,然后使用映射插件的mappedIndexOf 函数检索与输入ID绑定的数组。

这取决于输入的数据上下文是什么。如果 myObservableArray 中的对象被绑定到模板化的输入元素,则绑定将是"value: name"。你用的是福拉奇吗?或者这里只有一个输入元素,你明确希望绑定到第二个数组元素,其中 myObservableArray 只是在页面中的某个地方声明的?如果是这样,它将是"value: myObservableArray()[1].name"。