【问题标题】:How to get key and value in foreach如何在foreach中获取key和value
【发布时间】:2018-06-04 12:47:38
【问题描述】:

我已经创建了一个淘汰赛模板.... 如何在此模板中从 foreach 中获取键和值...

 <!-- ko foreach: { data: getCouponCodes(), as: 'key => value' } --> 

我需要得到键和值

【问题讨论】:

  • 什么键和值? 'key =&gt; value' 应该是 PHP 代码吗?展示一个有意义的数据样本,您的视图模型,解释当前发生的事情以及您期望发生的事情。
  • 0:{ name : "john" } 1: {name : "paul"}。我想得到'name'和'john'的值
  • 而数据是……在哪里?再次发布您的代码。
  • 请发布您的代码。不是没有任何上下文的严重裁剪的屏幕截图。发布一个工作视图模型。实际代码。阅读minimal reproducible example

标签: knockout.js knockout-2.0 magento2.2


【解决方案1】:

如果getCouponCodes 返回一个对象数组,则没有“特殊”淘汰方式可以直接在绑定中获取这些对象的键和值。

换句话说:您必须在视图或视图模型中使用纯 javascript。有很多可能的解决方案,这里有两个可以帮助您入门:

首选:使用computed 将数据转换为所需格式:

const getCouponCodes = () => [ { name: "John" }, { name: "Kevin" } ]

ko.applyBindings({ 
  couponData: ko.pureComputed(() =>
    // Use whatever logic you require to return a viewmodel of "key" and "value"
    getCouponCodes()
      .reduce(
        // You can also use: `for ... in`, `Object.keys`, etc.
        //  search for "Iterate over js object" to learn more
        (data, coupon) => data.concat(Object.entries(coupon)),
        []
      )
      // Here we construct a simple viewmodel to make our data-binds easier
      .map(([k, v]) => ({ key: k, value: v }))
  )
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>

<!-- ko foreach: couponData -->

<div data-bind="text: key + ': ' + value"></div>

<!-- /ko -->

在您的视图中直接使用 Object.keys$parent

ko.applyBindings({ 
  getCouponCodes: () => [ { name: "John" }, { name: "Kevin" } ]
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>

<!-- ko foreach: getCouponCodes() -->

<!-- ko foreach: Object.keys($data) -->

<div data-bind="text: $data + ': ' + $parent[$data]"></div>

<!-- /ko -->

<!-- /ko -->

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 2016-07-20
    • 2023-03-16
    • 1970-01-01
    • 2016-09-17
    • 2011-03-19
    • 1970-01-01
    相关资源
    最近更新 更多