可观察数组未在淘汰赛中的UI中反映

时间:2017-10-05 16:56:53

标签: javascript knockout.js knockout-3.0

我有一个可观察的数组,它有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中更新。

由于

2 个答案:

答案 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);