从助手访问 ReactiveVar // Template.instance()(间接)
Access ReactiveVar // Template.instance() from helper (indirectly)
如何在下面的构造中访问 ReactiveVar
?
Template.profile.helpers({
user: {
...
gender: () => Template.instance().genderFlag.get(), //returns Uncaught TypeError: Cannot read property 'genderFlag' of null
...
},
});
Returns error
因为gender:
里面的Template.instance()
是null
(当我console.log(Template.instance());
)
这就是我创建 ReactiveVar 的方式:
Template.profile.onCreated( function() {
this.genderFlag = new ReactiveVar(0);
});
P.S。 gender
在 user
里面,因为我使用 user
上下文,即 {{#with user}}
在我的 .html.
更新:
空格键部分:
<button type="button" name="Male" class="{{#if gender '1'}}gender--selected{{/if}}">Male</button>
<button type="button" name="Female" class="{{#if gender '2'}}gender--selected{{/if}}">Female</button>
所以我将 arg
传递给 Template.helper
gender
:
user: {
...
gender: (arg) => arg == Template.instance().genderFlag.get(),
...
}
因为您正在帮助器中创建一个函数,所以它似乎选择了错误的数据上下文,因此模板变量在调用时不可用,以下代码有效,它将函数移动到helper 本身,因此上下文是正确的并且它可以正确访问 Template.instance()
,然后您可以 return 根据需要为用户 #with
一个对象
Template.profile.helpers({
user: () => {
return {
...
gender: Template.instance().genderFlag.get()
...
};
}
});
编辑:
根据您的问题的更新,有几个选项,但我想说的最简洁的是:
Template.profile.helpers({
user: () => {
var gend = Template.instance().genderFlag.get();
return {
...
gender: gend,
isMale: gend===1?"gender--selected":"",
isFemale: gend===2?"gender--selected":"",
...
};
}
});
在你的把手里
<button type="button" name="Male" class="{{isMale}}">Male</button>
<button type="button" name="Female" class="{{isFemale}}">Female</button>
如何在下面的构造中访问 ReactiveVar
?
Template.profile.helpers({
user: {
...
gender: () => Template.instance().genderFlag.get(), //returns Uncaught TypeError: Cannot read property 'genderFlag' of null
...
},
});
Returns error
因为gender:
里面的Template.instance()
是null
(当我console.log(Template.instance());
)
这就是我创建 ReactiveVar 的方式:
Template.profile.onCreated( function() {
this.genderFlag = new ReactiveVar(0);
});
P.S。 gender
在 user
里面,因为我使用 user
上下文,即 {{#with user}}
在我的 .html.
更新:
空格键部分:
<button type="button" name="Male" class="{{#if gender '1'}}gender--selected{{/if}}">Male</button>
<button type="button" name="Female" class="{{#if gender '2'}}gender--selected{{/if}}">Female</button>
所以我将 arg
传递给 Template.helper
gender
:
user: {
...
gender: (arg) => arg == Template.instance().genderFlag.get(),
...
}
因为您正在帮助器中创建一个函数,所以它似乎选择了错误的数据上下文,因此模板变量在调用时不可用,以下代码有效,它将函数移动到helper 本身,因此上下文是正确的并且它可以正确访问 Template.instance()
,然后您可以 return 根据需要为用户 #with
Template.profile.helpers({
user: () => {
return {
...
gender: Template.instance().genderFlag.get()
...
};
}
});
编辑:
根据您的问题的更新,有几个选项,但我想说的最简洁的是:
Template.profile.helpers({
user: () => {
var gend = Template.instance().genderFlag.get();
return {
...
gender: gend,
isMale: gend===1?"gender--selected":"",
isFemale: gend===2?"gender--selected":"",
...
};
}
});
在你的把手里
<button type="button" name="Male" class="{{isMale}}">Male</button>
<button type="button" name="Female" class="{{isFemale}}">Female</button>