如何在Meteor中将数据变量从每个传递到?

问题描述

我正在尝试将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}}