【问题标题】:Create HTML based on number in array根据数组中的数字创建 HTML
【发布时间】:2018-05-24 00:05:12
【问题描述】:

第一次使用 KO,为这个听起来很愚蠢的问题道歉。

我有一个充满数据的数组。一个值是“星”,它是一个数字。在我的 HTML 中,我想基于该值创建 HTML 元素。例如,如果值为 4,我想要 4 个元素。如果值为 5,我想要 5 个元素,依此类推。我有正确的数据绑定的其余部分,这是我不确定的一部分。

我想要复制的元素是“fas fa-star”

数据

scores: [
    {
        title: 'Score One',
        stars: 5,
    },
}

HTML

<ul class="scores" data-bind="foreach: scores">
    <li>
       <div class="title" data-bind="text: title"></div>
       <div class="stars">
           <i class="fas fa-star"></i>
       </div>
     </li>
 </ul>

【问题讨论】:

  • learn.knockoutjs.com/#/?tutorial=custombindings(本教程的第 4 步)。
  • 谢谢。不太确定它们与我的布局结构有何关系。如果有帮助,我所有的东西都是硬编码的。它不会从数据库或任何东西中改变。

标签: knockout.js knockout-binding-handlers


【解决方案1】:

如果您尝试将 class 的值设置为 stars 的值(如 &lt;div class="5"&gt;),那么以下应该可以工作:

<ul class="scores" data-bind="foreach: scores">
    <li>
       <div class="title" data-bind="text: title"></div>
       <div data-bind="attr: { class: stars }">
           <i class="fas fa-star"></i>
       </div>
     </li>
 </ul>

编辑: 重新阅读您的问题后,这将是您正在寻找的内容:

<ul class="scores" data-bind="foreach: scores">
    <li>
       <div class="title" data-bind="text: title"></div>
       <div data-bind="foreach: new Array(stars)"> // <-- replaced scores with stars
           <i class="fas fa-star"></i>
       </div>
     </li>
 </ul>

【讨论】:

  • 感谢您的回复。恐怕仍然只提供了一个星元素而不是 5 个(如果我们指的是我的示例中的数据)
  • 我的错,更新了应该有效的答案.. 在这里工作 jsfiddle jsfiddle.net/LkqTU/47927
  • 太棒了。谢谢你的努力!非常感谢!
猜你喜欢
  • 2021-07-04
  • 1970-01-01
  • 1970-01-01
  • 2015-04-11
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
  • 2022-08-23
  • 1970-01-01
相关资源
最近更新 更多