【问题标题】:knockout JS $parent object change its information inside for-each loop淘汰 JS $parent 对象在 for-each 循环中更改其信息
【发布时间】:2021-10-16 18:02:36
【问题描述】:

我在magento2订单夏季详细信息页面中有一个淘汰js代码。

这里是代码

<p data-bind="text:console.log('parent befor', $parent)"></p> 
    <!--ko foreach: { data: JSON.parse($parent.options), as: 'option' } -->
        <p data-bind="text:console.log('parent after', $parent)"></p> 

一旦我们进入 foreach 循环,$parent 变量就会改变它的内容。一旦在循环中,我需要这个 $parent 变量的一些其他信息,但它都被一些未知信息所取代。这是我的控制台日志。我如何在 foreach 循环中使用原始 $parent 信息。

parent befor {item_id: "300", name: "Vertual Product", qty: 1, price: "3.0000", base_price: "3.0000"}

parent after UiClass {_super: undefined, ignoreTmpls: {…}, _requested: {…}, containers: Array(1), exports: {…}, …}

【问题讨论】:

    标签: knockout.js


    【解决方案1】:

    您所看到的行为的原因是上下文已更改,因此,被视为父级的内容已更改。你已经从循环外变成了循环内。

    查看$parents 数组属性。你应该在那里找到你要找的东西。根据上面的描述,你要找的应该是在$parents[1]https://knockoutjs.com/documentation/binding-context.html

    【讨论】:

    • 谢谢@Nathan,您的回答真的很有帮助。我在内部循环中使用“$parentContext.$parent”获得了我的价值。

    【解决方案2】:

    $parent inside foreach 绑定是指 foreach 循环的上下文,而不是父上下文。

    使用 $parents[1]

    它将引用父上下文。

    【讨论】:

    • 我在内部循环中使用“$parentContext.$parent”获得了我的价值
    猜你喜欢
    • 2016-08-24
    • 2019-10-03
    • 1970-01-01
    • 2014-03-15
    • 2016-07-19
    • 2013-10-07
    • 2022-06-10
    • 2013-05-20
    • 2014-07-23
    相关资源
    最近更新 更多