【问题标题】:ForEach List knockout to display in different divs, possible?ForEach List 淘汰赛显示在不同的 div 中,可能吗?
【发布时间】:2016-03-12 08:30:26
【问题描述】:

我的 List 绑定到我的 parentDiv

<div class="parentDivLegende" data-bind="template: {name: 'legende', foreach : ListeLegende}"></div>

它为每个元素生成一个 div,其中包含两个 mo div,见下文:

<script id="legende" type="text/html">
    <div class="PaddingLegende">
        <div class="CircleLegendeColor imgLegende" data-bind="style: { backgroundColor : Couleur}"></div>
        <div data-bind="text: Libelle" class="TextLegende"></div>
    </div>
</script>

但是,对于 3 个元素,我想创建一个新的 divParent,我希望它看起来像这样:

<div class="parentDivLegende">
            <div class="PaddingLegende">
                <div class="CircleLegendeColor imgLegende" data-bind="style: { backgroundColor : Couleur}"></div>
                <div data-bind="text: Libelle" class="TextLegende"></div>
            </div>
            <div class="PaddingLegende">
                <div class="CircleLegendeColor imgLegende" data-bind="style: { backgroundColor : Couleur}"></div>
                <div data-bind="text: Libelle" class="TextLegende"></div>
            </div>
            <div class="PaddingLegende">
                <div class="CircleLegendeColor imgLegende" data-bind="style: { backgroundColor : Couleur}"></div>
                <div data-bind="text: Libelle" class="TextLegende"></div>
            </div>
</div>

意味着,从第 3、7、10 等元素开始,我希望它打开一个新的父 div。

提前致谢!

【问题讨论】:

  • 你的循环中应该有一个可访问的 $index() 属性。然后,您可以使用 if 绑定来确定循环的索引并更改呈现的元素

标签: javascript jquery css knockout.js


【解决方案1】:

使用computeds 在您的代码中执行此操作。

function obj(lib, col) {
  return {
    Libelle: lib,
    Couleur: col
  };
}

data = [
  obj('one', 'blue'),
  obj('two', 'green'),
  obj('three', 'red'),
  obj('four', 'gray'),
  obj('five', 'lightblue'),
  obj('six', 'lightgreen'),
  obj('seven', 'lightgray')
];

vm = (function() {
  var self = {};
  self.originalArray = ko.observable(data);
  self.groupedArray = ko.computed(function() {
    var result = [],
      originalData = self.originalArray();
    for (var index = 0; index < originalData.length; index += 3) {
      result.push(originalData.slice(index, index + 3));
    }
    return result;
  });
  return self;
}());

ko.applyBindings(vm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div data-bind="foreach: groupedArray">
  <h1>Group begins</h1>
  <div class="parentDivLegende" data-bind="foreach:$data">
    <div class="PaddingLegende">
      <div class="CircleLegendeColor imgLegende" data-bind="style: { backgroundColor : Couleur}">
        Some color
      </div>
      <div data-bind="text: Libelle" class="TextLegende"></div>
    </div>
  </div>
</div>

【讨论】:

  • 太棒了!但我不能让它与我的代码一起工作。你能看看HERE IN JS FIDDLE吗?提前谢谢!
  • 我做到了!谢谢罗伊!第一个 foreach groupedArray,第二个 foreach 我放了我的 List,这就是为什么它不起作用。然后我将其替换为 $data --- 我们开始了!
猜你喜欢
  • 1970-01-01
  • 2019-06-17
  • 2013-07-07
  • 2013-09-16
  • 2014-05-17
  • 1970-01-01
  • 2017-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多