2013-03-18 89 views
0

有一个字符串数组和一个输入元素。我想根据条件使用该输入元素编辑任何数组成员。如何动态更改绑定模型属性

如何实现这样的事情:

mymodel.setActiveArrayMember(1) 
// now input is bound to an array member 1 

mymodel.setActiveArrayMember(5) 
// now input is bound to an array member 5 

etc. 

回答

1

你可以活动成员设置为一个计算观察到:

var activeArrayMember = ko.computed(function() 
{ 
    read: function() 
    { 
     return array()[activeIndex()]; 
    } 
    write: function (value) 
    { 
     array()[activeIndex()] = value; 
     array.valueHasMutated(); 
    } 
}); 

这assumuing你的阵列是可观察到的阵列。如果不是,则丢失()。然后有一个可观察的活跃成员的指标,并设定,当你要更改的成员:

activeIndex(5); 

绑定你的HTML activeArrayMember了,应该所有的工作。

+0

谢谢你的回答。但我不知道如何做到这一点,但与更复杂的阵列成员。假设有一个数组:[{name:'Jon',age:34},{name:'Tom',age:50},...]如何将name属性绑定到输入?我尝试了data-bind ='text:activeArrayMember.name',data-bind ='text:activeArrayMember()。name',data-bind ='with:activeArrayMember,text:name',但它们都没有工作。 – Jonas 2013-03-18 15:08:51

+0

你可以添加你想用于活动成员的html,还有父html元素吗? – 2013-03-18 15:19:23

+0

这不是工作示例:http://jsfiddle.net/fc5yu/16/希望这会给你一个想法,我想做什么。 – Jonas 2013-03-18 20:05:56