我有一个可观察的数组,它有2个可观察的属性。我可以在通过UI放置输入框时更新数组,如下所示
<tbody data-bind="foreach: Scopes.ScopesData">
<tr style="vertical-align: baseline">
<td style="white-space:nowrap"><span data-bind="text: name" /></td>
<td>
<input type="checkbox" data-bind="checked: HeadCountFlag, enable: isAvailable" />
</td>
<td>
<input data-bind="textInput: HeadCountpercent, enable: isAvailable" class="amount" />
</td>
</tr>
</tbody>
在这里,ScopesData是一个可观察的数组和2个属性HeadCountFlag 和HeadCountpercent也是可以观察到的。
我可以对其进行更改并看到它更新如下
<span data-bind="text: Scopes.ScopesData()[0].HeadCountpercent()"></span>
现在我想在某些事件发生时通过一些javascript代码更新它 我可以更改数据并保存,但它没有反映在UI中。
model.Scopes.ScopesData._latestValue[0].HeadCountpercent._latestValue = 99;
有人可以告诉我需要做些什么更改才能让这个Scopes.ScopesData()[0] .HeadCountpercent()从js代码更新并看到它在UI中更新。
由于
答案 0 :(得分:1)
您无需访问_latestValue
。要向observable
写入新值,需要调用observable
并将新值作为参数传递。
model.Scopes.ScopesData()[0].HeadCountpercent(99);
Here's a fiddle进行测试。我添加了一个按钮,该按钮将调用javascript函数以使用新值更新ScopesData
的第一个index
。
答案 1 :(得分:0)
通过引用此帖子Knockout observable change not detected if value changed externally
找到答案基本上我可以使用设置值 model.Scopes.ScopesData._latestValue [0] .HeadCountpercent(99);