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

时间:2012-07-05 07:37:30

标签: javascript knockout.js knockout-2.0

我想绑定我的文字输入值

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

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

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

用什么表达式替换?whatToWriteHere ??

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:0)

这取决于输入的数据上下文。如果myObservableArray中的对象绑定到模板化输入元素,则绑定将为“value:name”。你在使用foreach吗?或者只有一个输入元素,您明确要绑定到第二个数组元素,其中myObservableArray只是在页面中的某处声明?如果是这样,那就是“value:myObservableArray()[1] .name”。