问题描述
我正在尝试将git变量传递给用包裹的设置,如下所示 如果我们现在可以看到它是setting.gitlab,但我想像set.git那样动态地进行设置,其中git是每个循环中提到的变量。
{{#each git in gitlabFields}}
{{#with settings.gitlab}}
<div data-value={{@index}}>{{git}}</div>
<div>hihi</div>
<div class="rc-user-info__row">
<div class="rc-input">
<label class="rc-input__label">
<div >
<div class="rc-input__title" style="display: inline-block;" >{{_ label}}{{equal default value '*'}}</div>
</div>
<!-- {{#each gitlabFields}} -->
<div id="dynamicFields">
<div class="rc-input__wrapper" >
<input type="text" name="{{git}}" value="{{value}}" class="rc-input__element js-input" disabled="{{./disabled}}"/>
</div>
</div>
<!-- {{/each}} -->
</label>
</div>
</div>
{{/with}}
{{/each}}
git变量在这里settings.git无法访问 其显示未定义。
解决方法
假设settings
是可访问的对象,则可以编写一个帮助程序来解析该值:
Template.myTemplate.helpers({
getGitSettings (settings,key) {
return settings[key]
}
})
如果您想将settings
与模板解耦或避免将其传递给整个显示列表,还可以在Template模块中将其定义为私有变量:
const gitSettings = { ... };
Template.myTemplate.helpers({
getGitSettings (settings,key) {
return gitSettings[key]
}
})
如果在许多模板中使用了此模式,则还可以定义一个全局帮助器:
const gitSettings = { ... };
Template.registerHelper('gitSettings',function (key) {
return gitSettings[key]
})
并通过
使用它{{#each field in gitlabFields}}
{{#with gitSettings field}}...{{/with}}
{{/each}}