【问题标题】:Observable array not getting reflected in UI in knockout可观察数组在淘汰赛中未反映在 UI 中
【发布时间】:2017-10-06 02:22:44
【问题描述】:

我有一个具有 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;

谁能告诉我我需要做哪些更改才能从 js 代码更新此 Scopes.ScopesData()[0].HeadCountpercent() 并查看它在 UI 中的更新。

谢谢

【问题讨论】:

  • 你需要把你正在改变的东西变成一个可观察的,并通过那个可观察的来改变它。
  • 请使用 Stack Snippets([&lt;&gt;] 工具栏按钮)通过 runnable minimal reproducible example 演示问题来更新您的问题。
  • ScopesData 数组和 HeadCountpercent 属性都是可观察的。你能告诉我你指的是什么吗?
  • 我建议阅读knockoutjs.com 上的教程。对 KO 的介绍非常好。
  • 感谢您更改可观察指针的值..让我朝着正确的方向思考。

标签: javascript knockout.js knockout-3.0


【解决方案1】:

您无需访问_latestValue。要将新值写入observable,您需要调用observable 并将新值作为参数传递。

model.Scopes.ScopesData()[0].HeadCountpercent(99);

Here's a fiddle 用于测试。我添加了一个按钮,它将调用一个 javascript 函数来更新 ScopesData 的第一个 index 新值。

【讨论】:

    【解决方案2】:

    刚刚通过引用此线程找到答案Knockout observable change not detected if value changed externally

    基本上我可以使用 model.Scopes.ScopesData._latestValue[0].HeadCountpercent(99);

    【讨论】:

    • 我猜你也应该对 ScopesData 做同样的事情。内置的 _latestValue 属性不应该用于调试目的。
    猜你喜欢
    • 2019-10-05
    • 2012-09-08
    • 2013-05-01
    • 1970-01-01
    • 2015-10-05
    • 2015-06-22
    • 2013-03-22
    • 1970-01-01
    相关资源
    最近更新 更多