Meteor 在创建时设置变量
我试图将Meteor 在创建时设置变量,meteor,Meteor,我试图将this.editMode设置为一个变量,但它似乎没有返回值。我不确定我是否正确设置了变量,或者它是否完全是另一个变量 Template.user.onCreated(function() { var classes = function (){ var class = (this.profile.class && this.profile.class.name); if (class != null) {
this.editMode
设置为一个变量,但它似乎没有返回值。我不确定我是否正确设置了变量,或者它是否完全是另一个变量
Template.user.onCreated(function() {
var classes = function (){
var class = (this.profile.class && this.profile.class.name);
if (class != null) {
return true;
} else {
return false;
};
};
this.editMode = new ReactiveVar(classes);
});
在模板html中
<template name="user">
{{#if isEditMode}}
<div class="btn btn-info save-user">
<i class="fa fa-save"></i>
</div>
<!-- your edit form here -->
{{else}}
<div class="btn btn-info edit-user">
<i class="fa fa-pencil"></i>
</div>
<!-- your view form here -->
{{/if}}
</template>
更新
如果我理解正确,您希望在加载模板时根据用户信息显示表单或列表。如果是这种情况,代码的问题是,它没有调用函数。把它改成这样
Template.user.onCreated(function() {
var template = this;
template.editMode = new ReactiveVar(false);
template.autorun(function () {
var data = Template.currentData(); //Is template data your user?
var isClassAvailable = (data.profile.class && data.profile.class.name) ? true : false;
template.editMode.set(isClassAvailable);
});
});
在模板html中
<template name="user">
{{#if isEditMode}}
<div class="btn btn-info save-user">
<i class="fa fa-save"></i>
</div>
<!-- your edit form here -->
{{else}}
<div class="btn btn-info edit-user">
<i class="fa fa-pencil"></i>
</div>
<!-- your view form here -->
{{/if}}
</template>
更新
如果我理解正确,您希望在加载模板时根据用户信息显示表单或列表。如果是这种情况,代码的问题是,它没有调用函数。把它改成这样
Template.user.onCreated(function() {
var template = this;
template.editMode = new ReactiveVar(false);
template.autorun(function () {
var data = Template.currentData(); //Is template data your user?
var isClassAvailable = (data.profile.class && data.profile.class.name) ? true : false;
template.editMode.set(isClassAvailable);
});
});
对于这样的用例,我将使用Session
Session.setDefault('userEditMode', false);
Template.user.rendered = function() {
var classes = function (){
var class = (this.profile.class && this.profile.class.name);
if (class != null) {
return true;
} else {
return false;
};
};
Session.set('userEditMode',classes);
});
更新(供您评论)
您应该检查会话变量,而不是类函数
因此,在模板中使用:
{{#if isEditMode}} {{> form}} {{else}} {{> list}} {{/if}}
在模板帮助器中:
Template.user.helpers({
isEditMode : return Session.get('isEditMode');
});
如果使用,也可以直接访问模板中的会话变量:
{{#if $.Session.get 'isEditMode'}} {{> form}} {{else}} {{> list}} {{/if}}
这样,您就不需要定义助手了。我会将会话用于此类用例
Session.setDefault('userEditMode', false);
Template.user.rendered = function() {
var classes = function (){
var class = (this.profile.class && this.profile.class.name);
if (class != null) {
return true;
} else {
return false;
};
};
Session.set('userEditMode',classes);
});
更新(供您评论)
您应该检查会话变量,而不是类函数
因此,在模板中使用:
{{#if isEditMode}} {{> form}} {{else}} {{> list}} {{/if}}
在模板帮助器中:
Template.user.helpers({
isEditMode : return Session.get('isEditMode');
});
如果使用,也可以直接访问模板中的会话变量:
{{#if $.Session.get 'isEditMode'}} {{> form}} {{else}} {{> list}} {{/if}}
这样你就不需要定义你的助手了。一个被动变量不能从一个函数中创建。这太糟糕了。那么有没有一个简单的方法呢?你到底想实现什么?你想对什么做出反应?这是一种形式。我想检查以确保用户选择了一个类。如果用户选择了一个类,它将显示一个列表,否则它将显示表单。我希望它是被动的,这样在事件点击(fa pencil)时,它可以在表单和列表之间切换。被动的var不能从函数中创建。这太糟糕了。那么有没有一个简单的方法呢?你到底想实现什么?你想对什么做出反应?这是一种形式。我想检查以确保用户选择了一个类。如果用户选择了一个类,它将显示一个列表,否则它将显示表单。我希望它是反应性的,这样在事件点击(fa铅笔)时,它可以在表单和列表之间切换。嗨,Areca。如何将其添加到模板中。我试过
{{{if class}}{{>form}{{{else}{{>list}{{/if}}
,但这对Areca不起作用。如何将其添加到模板中。我试过{{{{{}如果类}}{{{>形式}{{{else}{{>列表}{{/if}}
,但那不管用。这不会在设置reactiveVar之前检查表单的状态,我正试图这样做。有什么方法可以把它包括进去吗?@bp123你们能再解释一下你们所说的表单状态是什么意思吗。我不明白。没问题。我想检查一部分文件是否完整。实际上,我想检查数据库是否包含特定信息。如果用户已经选择了一个类,则列表将显示onload,但是如果用户没有选择一个类,则会加载表单onload。@bp123更新了答案,如果这是您想要的,请告诉我。谢谢。你帮了大忙!谢谢你,基索。这不会在设置reactiveVar之前检查表单的状态,我正试图这样做。有什么方法可以把它包括进去吗?@bp123你们能再解释一下你们所说的表单状态是什么意思吗。我不明白。没问题。我想检查一部分文件是否完整。实际上,我想检查数据库是否包含特定信息。如果用户已经选择了一个类,则列表将显示onload,但是如果用户没有选择一个类,则会加载表单onload。@bp123更新了答案,如果这是您想要的,请告诉我。谢谢。你帮了大忙!