Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor 在创建时设置变量_Meteor - Fatal编程技术网

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更新了答案,如果这是您想要的,请告诉我。谢谢。你帮了大忙!