首页 > 解决方案 > 如何将数据变量从每个传递到流星中的with?

问题描述

我正在尝试将 git 变量传递给设置,如下所示如果我们现在可以看到它是 setting.gitlab 但我想让它像 setting.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 它显示 undefined 。

标签: meteormeteor-blaze

解决方案


假设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}}

推荐阅读