【问题标题】:Nested Meteor (Blaze) templates controlled by parent由父级控制的嵌套 Meteor (Blaze) 模板
【发布时间】:2014-11-04 14:28:28
【问题描述】:

我正在努力避免在创建或编辑新项目时对基本相同的表单进行重复的模板代码。

例如,像这样:

<template name="createOrEdit">

   <form role="form">

      <div class="form-group">
         <input type="text" class="form-control" id="title" placeholder="Title"/ value="{{title}}">
      </div>

      <button type="submit" class="btn btn-default">Submit</button>

   </form>

</template>

<template name="create">   
  {{> createOrEdit}}
</template>

<template name="edit">   
  {{> createOrEdit}}
</template>

然后,我可以创建单独的模板处理程序:

Template.create.events(...
Template.edit.events(...

但是,那些父模板包装器不会获取主子模板的事件。

有没有办法做我想做的事?

【问题讨论】:

    标签: meteor meteor-blaze spacebars


    【解决方案1】:

    那些父模板可以从子模板中获取事件。像这样使用它:

    Template.create.events({
      'click .btn':function(){
    
      }
    })
    
    Template.edit.events({
      'click .btn':function(){
    
      }
    })
    

    Template.createOrEdit.events 对象中,您保留两个模板使用的事件,并在 Template.edit.eventsTemplate.create.events 每个特定代码中。

    see proofsource code

    这种方法非常好,因为您可以通过传递一些变量来自定义表单:

    {{# create btnText="create" }}{{/create}}
    {{# edit btnText="update" }}{{/edit}}
    

    createOrEdit 模板中,您可以使用变量btnText 来更改按钮的标签。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-19
      • 2012-05-26
      • 2017-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-17
      • 2016-03-24
      相关资源
      最近更新 更多