【问题标题】:Why does #each tag not accept an array?为什么#each 标签不接受数组?
【发布时间】:2015-12-26 01:34:40
【问题描述】:

我的optionData.js如下:

"options"=
[
{
  "option_text": "Just Me",
  "option_image": "just-me.svg",
  "option_is_selected": false
},
{
  "option_text": "Spouse/Partner",
  "option_image": "spouse-partner.svg",
  "option_is_selected": false
},
{
  "option_text": "Child/Children",
  "option_image": "child-children.svg",
  "option_is_selected": false
},
{
  "option_text": "Grand Children",
  "option_image": "grandchildren.svg",
  "option_is_selected": false
},
{
  "option_text": "Parent(s)",
  "option_image": "parents.svg",
  "option_is_selected": false
},
{
  "option_text": "Pet(s)",
  "option_image": "pets.svg",
  "option_is_selected": false
},
{
  "option_text": "Anyone Else",
  "option_image": "anyone-else.svg",
  "option_is_selected": false
}
]

这是我的 options.js 文件

calc_option_set1: function(){
    var options_set = this.options;
    option_count = options_set.length;
    upperRowObjects = [];

    if(option_count == 2)
    {
        rowBreak = -1;
    }
    else if(option_count % 2 == 0)
    {
        rowBreak = (option_count / 2);
    }
    else
    {
        rowBreak = (option_count + 1) / 2;
    }

    for(i=0; i<rowBreak; i++)
        upperRowObjects = upperRowObjects + options_set[i];
    return upperRowObjects;
},

这是 options.html

{{#each option_set1}}
<div class="col-xs-2">
    <center>
        <img src="/images/{{option_image}}" class="img-responsive img-rounded img-option"/>
        <h5>{{option_text}}</h5>
    </center>
</div>
{{/each}}

基本上我想划分选项并将它们呈现在两个不同的行(CSS)中。如果我打印 {{calc_option_set1}} 我得到我想要的对象集。 但是,如果我尝试像在代码中那样迭代它们,我会得到错误为

“未捕获的错误:{{#each}} 目前只接受数组、游标或 虚假的价值观。”

如何遍历方法返回的数组?有什么办法可以将它分配给一个变量然后使用它?请帮忙...

【问题讨论】:

标签: javascript meteor spacebars


【解决方案1】:

数组连接不适用于+ 运算符。请改用 Array.push()。

calc_option_set1: function(){
    var options_set = this.options;
    option_count = options_set.length;
    upperRowObjects = [];

    if(option_count == 2)
    {
        rowBreak = -1;
    }
    else if(option_count % 2 == 0)
    {
        rowBreak = (option_count / 2);
    }
    else
    {
        rowBreak = (option_count + 1) / 2;
    }

    for(i=0; i<rowBreak; i++)
        upperRowObjects.push(options_set[i]);
    return upperRowObjects;
},

并通过以下方式访问它:

{{#each calc_option_set1}}
{{/each}}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-11-18
  • 2014-07-06
  • 1970-01-01
  • 2020-12-25
  • 2011-12-28
  • 2021-11-05
  • 2018-10-10
  • 1970-01-01
相关资源
最近更新 更多