我有一个对象(可观察)并且它有键,每个键都是可观察的。其中一个键是包含其他可观察对象的数组。
我希望能够使用HTML输入字段修改这些值。我想到的是简单地通过可观察数组进行操作,并对输入进行值/ textInput绑定以修改它们。
但是,在修改文本输入时 - 原始值不会改变!难道我做错了什么?为什么绑定值不会按照我期望的方式更新?
我已经将我正在做的事情分解为更通用的版本:http://jsfiddle.net/veqr2q6q/
<div class='liveExample'>
<div class="line-container" data-bind="foreach: {data: text, as: 'line'}">
<input type="text" data-bind="textInput: line" /><br />
</div>
<h2>Hello,</h2>
<ul data-bind='foreach: {data: text, as: "line"}'>
<li data-bind="text: line"></li>
</ul>
</div>
// Here's my data model
var ViewModel = function(first, last) {
this.text = ko.observableArray([
ko.observable(first),
ko.observable(last)
])
};
ko.applyBindings(new ViewModel("Planet", "Earth")); // This makes Knockout get to work
答案 0 :(得分:3)
我认为在这种情况下你想使用$rawData
。我在这里更新你的小提琴。
http://jsfiddle.net/veqr2q6q/2/
<div class='liveExample'>
<div class="line-container" data-bind="foreach: text">
<input type="text" data-bind="textInput: $rawData" /><br />
</div>
<h2>Hello,</h2>
<ul data-bind='foreach: {data: text, as: "line"}'>
<li data-bind="text: line"></li>
</ul>
</div>
中引用
通常[
$rawData
]与$data
相同,但如果提供给Knockout的视图模型包含在一个observable中,$data
将是展开的视图模型,{ {1}}将是可观察的本身。