可观察阵列不会在UI中反映出来
我有一个具有2个可观察属性的可观察数组。通过UI放置时的输入框下面可观察阵列不会在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代码,当一些事件发生 更新此,我能够改变数据并且它也会被保存,但它并未反映在用户界面中。
model.Scopes.ScopesData._latestValue[0].HeadCountpercent._latestValue = 99;
有人能告诉我什么样的变化,我需要作出有这个Scopes.ScopesData()[0] .HeadCountpercent()的JS代码更新,看看它获得的UI更新。
由于
通过参照该线程Knockout observable change not detected if value changed externally
基本上我可以设置使用 model.Scopes.ScopesData._latestValue [0] .HeadCountpercent(99)的值刚刚找到答案;
我猜你应该对ScopesData也做同样的事情。除了调试目的外,_latestValue属性中内置的内容不应该被使用。 –
您无需访问_latestValue
。要为observable
写入新值,您需要调用observable
并将新值作为参数传递。
model.Scopes.ScopesData()[0].HeadCountpercent(99);
Here's a fiddle进行测试。我添加了一个按钮,它将调用一个javascript函数以更新ScopesData
的第一个index
并创建一个新值。
你需要做出你正在改变一个观察值,并通过该观察值来改变它。 –
请使用Stack Snippets('[
ScopesData数组和HeadCountpercent属性都是可观察的。你能否确切地告诉我你指的是什么? – sid99