设置变量onCreated

时间:2016-03-16 05:31:56

标签: meteor

我试图将int year = jYearChooser1.getYear(); int month = jMonthChooser1.getMonth(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd 00:00:00"); Date dt = new Date(year, month,00); Date todate = dateFormat.format(dt); 设置为变量,但它似乎没有返回值。我不确定我是否正确设置变量或者是否完全是其他设置。

this.editMode

2 个答案:

答案 0 :(得分:3)

在你的模板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>

然后在您的模板javascript中,首先向模板实例添加一个反应变量,然后添加编辑此反应变量的click事件侦听器。使用帮助程序检索模式以相应地显示表单或列表。

Template.user.onCreated(function() {
    this.isEditMode = new ReactiveVar(false);
});

Template.user.events({
    'click .edit-user': function (ev, template) {
        template.isEditMode.set(true);
    },
    'click .save-user': function (ev, template) {
        //validate and save user data here and in the callback, set
        template.isEditMode.set(false);
    }
});

Template.user.helpers({
    'isEditMode': function () {
        var template = Template.instance();
        return template.isEditMode.get();
    }
});

<强>更新

如果我理解正确,您希望在加载模板时根据用户信息显示表单或列表。如果是这种情况,代码的问题是,它不是调用函数。把它改成这样的东西,

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); 
   });
});

答案 1 :(得分:0)

我会将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);
});

更新(供您发表评论)

您应该使用Session变量检查,而不是使用类函数。

因此,在您的模板中使用:

{{#if isEditMode}} {{> form}} {{else}} {{> list}} {{/if}}

在你的模板助手中:

Template.user.helpers({
    isEditMode : return Session.get('isEditMode');
});

如果您使用handlebars-helpers for meteor,则可以直接访问模板中的Session变量:

{{#if $.Session.get 'isEditMode'}} {{> form}} {{else}} {{> list}} {{/if}}

有了这个,您无需定义助手。