敲除 JS $parent 对象在 for-each 循环中更改其信息
knockout JS $parent object change its information inside for-each loop
我在magento2 order summery detail page有一个knockout 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 变量的一些其他信息,但它们都被一些未知信息所取代。这是我的 console.log。我如何在 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: {…}, …}
您所看到的行为的原因是上下文已更改,因此,被认为是父级的内容已更改。你已经从圈外变成了圈内
查看 $parents
数组 属性。你应该在那里找到你要找的东西。根据上面的描述,你要找的应该在$parents[1]
https://knockoutjs.com/documentation/binding-context.html
foreach 绑定中的 $parent 指的是 foreach 循环的上下文,而不是父上下文。
使用$parents[1]
它将引用父上下文。
我在magento2 order summery detail page有一个knockout 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 变量的一些其他信息,但它们都被一些未知信息所取代。这是我的 console.log。我如何在 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: {…}, …}
您所看到的行为的原因是上下文已更改,因此,被认为是父级的内容已更改。你已经从圈外变成了圈内
查看 $parents
数组 属性。你应该在那里找到你要找的东西。根据上面的描述,你要找的应该在$parents[1]
https://knockoutjs.com/documentation/binding-context.html
foreach 绑定中的 $parent 指的是 foreach 循环的上下文,而不是父上下文。
使用$parents[1]
它将引用父上下文。