Forms 设置单选按钮的值

Forms 设置单选按钮的值,forms,meteor,Forms,Meteor,所以我试图在编辑表单上设置单选按钮的值。我尝试使用jQuery运行if语句,然后使用选择器设置checked属性。但是我想我不明白jQuery和Template.Template.helpers是如何一起工作的,因为我从来没有让jQuery做过任何事情 无论如何,我有以下工作,但我只是古玩,如果这是最好的方式做到这一点。对于像在表单中设置单选按钮的值这样简单的事情来说,这似乎太夸张了。我想可能有一个更适合表单的包 下面是Javascript Template.clientEdit.helpers

所以我试图在编辑表单上设置单选按钮的值。我尝试使用jQuery运行if语句,然后使用选择器设置checked属性。但是我想我不明白jQuery和Template.Template.helpers是如何一起工作的,因为我从来没有让jQuery做过任何事情

无论如何,我有以下工作,但我只是古玩,如果这是最好的方式做到这一点。对于像在表单中设置单选按钮的值这样简单的事情来说,这似乎太夸张了。我想可能有一个更适合表单的包

下面是Javascript

Template.clientEdit.helpers({

    // set the radio buttons
    isActive: function() {
        if (this.status == "active") {
            return "checked";
        }
    },

    isArchived: function() {
        if (this.status == "archived") {
            return "checked";
        }
    },
});
还有HTML

<input type="radio" name="status" id="status-radio-1" value="active" {{isActive}} >
<input type="radio" name="status" id="status-radio-2" value="archived" {{isArchived}} >


谢谢

您可以编写一个全局把手助手,用于所有流星表单,例如:

Handlebars.registerHelper('checked_eq', function(x, y){
  if (x === y){
     return ' checked="checked"';
  }
  return ''
})
并在模板中使用它,如:

<input type="radio" name="status" id="status-radio-1" value="active" {{checked_eq status 'active'}} >
<input type="radio" name="status" id="status-radio-2" value="archived" {{checked_eq status 'archived'}} >
<input type="radio" name="status" id="status-radio-1" value="active" {{checked checkedActive}} >
<input type="radio" name="status" id="status-radio-2" value="archived" {{checked checkedArchived}} >
并在呈现模板之前对数据/数据上下文应用转换:

 // ...  using iron-router for data contet
 data: function(){
   var client = Clients.findOne(this.params.clientId);
   client.checkedActive = (client.status == 'active');
   client.checkedArchived = (client.status == 'archived');
   return client;
 }
 // ...

 // ... or apply a transform when making a list
 Template.clientList.helpers({
    clients: function(){
      return Clients.find({},{
        transform: function(client){
           client.checkedActive = (client.status == 'active');
           client.checkedArchived = (client.status == 'archived');
           return client;
        }
      });
    }
 });
然后在模板中使用,如:

<input type="radio" name="status" id="status-radio-1" value="active" {{checked_eq status 'active'}} >
<input type="radio" name="status" id="status-radio-2" value="archived" {{checked_eq status 'archived'}} >
<input type="radio" name="status" id="status-radio-1" value="active" {{checked checkedActive}} >
<input type="radio" name="status" id="status-radio-2" value="archived" {{checked checkedArchived}} >

您可以编写一个全局把手助手,用于所有Meteor表单,例如:

Handlebars.registerHelper('checked_eq', function(x, y){
  if (x === y){
     return ' checked="checked"';
  }
  return ''
})
并在模板中使用它,如:

<input type="radio" name="status" id="status-radio-1" value="active" {{checked_eq status 'active'}} >
<input type="radio" name="status" id="status-radio-2" value="archived" {{checked_eq status 'archived'}} >
<input type="radio" name="status" id="status-radio-1" value="active" {{checked checkedActive}} >
<input type="radio" name="status" id="status-radio-2" value="archived" {{checked checkedArchived}} >
并在呈现模板之前对数据/数据上下文应用转换:

 // ...  using iron-router for data contet
 data: function(){
   var client = Clients.findOne(this.params.clientId);
   client.checkedActive = (client.status == 'active');
   client.checkedArchived = (client.status == 'archived');
   return client;
 }
 // ...

 // ... or apply a transform when making a list
 Template.clientList.helpers({
    clients: function(){
      return Clients.find({},{
        transform: function(client){
           client.checkedActive = (client.status == 'active');
           client.checkedArchived = (client.status == 'archived');
           return client;
        }
      });
    }
 });
然后在模板中使用,如:

<input type="radio" name="status" id="status-radio-1" value="active" {{checked_eq status 'active'}} >
<input type="radio" name="status" id="status-radio-2" value="archived" {{checked_eq status 'archived'}} >
<input type="radio" name="status" id="status-radio-1" value="active" {{checked checkedActive}} >
<input type="radio" name="status" id="status-radio-2" value="archived" {{checked checkedArchived}} >

我正在处理这个问题,但无法让它工作-非常接近,但它阻止了加载模板,因此基于此,我使用了以下方法,效果非常好:

Template.registerHelper('checkedRadio', function(x, y){
    return (x === y) ? { checked: 'checked' } : null;
});

我当时正在处理这个问题,但无法使其正常工作-非常接近,但它阻止了加载模板,因此基于此,我使用了以下方法,效果非常好:

Template.registerHelper('checkedRadio', function(x, y){
    return (x === y) ? { checked: 'checked' } : null;
});

非常有用。谢谢我猜Handlebar helper文件可以放在任何地方,但是有没有组织这类文件的最佳实践?好吧,最佳实践是将任何大小合理的应用程序拆分到包中!因此,我制作了一系列基于
app xx
的软件包,例如
app ui把手
,并将相关文件塞进其中。非常有用。谢谢我猜Handlebar helper文件可以放在任何地方,但是有没有组织这类文件的最佳实践?好吧,最佳实践是将任何大小合理的应用程序拆分到包中!因此,我制作了一系列基于
appxx
的软件包,例如
appui把手
,并将相关文件塞进其中。