淘汰 JS $parent 对象在 for-each 循环中更改其信息
Posted
技术标签:
【中文标题】淘汰 JS $parent 对象在 for-each 循环中更改其信息【英文标题】:knockout JS $parent object change its information inside for-each loop 【发布时间】: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: …, …
【问题讨论】:
【参考方案1】:您所看到的行为的原因是上下文已更改,因此,被视为父级的内容已更改。你已经从循环外变成了循环内。
查看$parents
数组属性。你应该在那里找到你要找的东西。根据上面的描述,你要找的应该是在$parents[1]
https://knockoutjs.com/documentation/binding-context.html
【讨论】:
谢谢@Nathan,您的回答真的很有帮助。我在内部循环中使用“$parentContext.$parent”获得了我的价值。 【参考方案2】:$parent inside foreach 绑定是指 foreach 循环的上下文,而不是父上下文。
使用 $parents[1]
它将引用父上下文。
【讨论】:
我在内部循环中使用“$parentContext.$parent”获得了我的价值以上是关于淘汰 JS $parent 对象在 for-each 循环中更改其信息的主要内容,如果未能解决你的问题,请参考以下文章