车把,访问父每个循环变量

Posted

技术标签:

【中文标题】车把,访问父每个循环变量【英文标题】:handlebars, access to parent each loop variable 【发布时间】:2019-02-07 16:26:44 【问题描述】:

我有类似这里的代码。我想将输入名称设置为之前每个循环中的@index。

我可以以某种方式访问​​@previousIndex 吗?或者我可以将输入分配给在第二个每个循环之前创建的某种组,该组将在其中设置所有输入名称?

我收到的数据:

 questions:[  
    
     question:"How old are you?",
     answers:[  
        '16',
        '18',
        '20',
        '25',
        'other'
     ]
  ,
    
     question:"How many kids do you have?",
     answers:[  
        '0',
        '1',
        '2',
        'other'
     ]
  
]

hbs 代码:

#each questions
    <li>
        <h3 class='question'>this.question</h2>
        <div class='flexbox'>
            #each this.answers
            <label class="container">
                <input type='radio' name='@previousIndex' value='@index'>  
                <span class='checkmark'>this</span>
            </label>              
            /each
        </div>
    </li>
/each

【问题讨论】:

也许这会对你有所帮助***.com/questions/38696860/… 解决了吗?检查下面的答案?成功了吗? 我发表我自己的答案。 【参考方案1】:

当您使用#each 时,您会在@index 中获得索引,如果您想要previousIndex,为什么不直接使用parseInt(@index) - 1

你是这样做的:

var Handlebars = require('handlebars');

Handlebars.registerHelper("previous", function(value, options)

    return parseInt(value) - 1;
);

现在将您的 hbs 代码更新为:

#each questions
    <li>
        <h3 class='question'>this.question</h2>
        <div class='flexbox'>
            #each this.answers
            <label class="container">
                <input type='radio' name='previous @index' value='@index'>  
                <span class='checkmark'>this</span>
            </label>              
            /each
        </div>
    </li>
/each

希望这对你有用!

【讨论】:

【参考方案2】:

我无法为您提供 100% 有效的代码(当前未设置环境),但根据我之前使用车把的经验,我将尝试指导您找到可能的解决方案。

assign "previousIndex" 0
#each questions
    <li>
        <h3 class='question'>this.question</h2>
        <div class='flexbox'>
            #each this.answers
            <label class="container">
                <input type='radio' name='../previousIndex' value='@index'>  
                <span class='checkmark'>this</span>
            </label>              
            /each
        </div>
    </li>
    assign "../previousIndex" "@index"
/each

【讨论】:

【参考方案3】:

我必须像这里一样创建两个辅助函数。 Get 在这里是因为我无法通过简单地编写 myVariableName 直接从 .hbs 文件访问变量。 Hbs 文件现在看起来像这里。

<div class='flexbox'>
            assign "parentIndex" @index 
            #each this.answers
            <label class="container">
                <input type='radio' name='get "parentIndex"' value='@index'>  
                <span class='checkmark'>this</span>
            </label>              
            /each
        </div>

帮手

assign: function(varName, varValue, options) 
    options.data.root[varName] = varValue;


get: function(varName, options) 
    return options.data.root[varName]

【讨论】:

以上是关于车把,访问父每个循环变量的主要内容,如果未能解决你的问题,请参考以下文章

使用车把和 Mandrill-dotnet -library 在 mandrill 中的每个循环

通过 javascript 访问车把变量

如何在车把循环数组中使用 lang var?

从木偶视图重新加载部分车把将无法访问为父视图中的部分模板元素定义的 ui 对象

mandrill 车把每个循环 - 如何检查奇怪的项目

变量可以传递给嵌套的for循环吗?