2014-09-10 98 views
0

我试图避免创建或编辑新项目时必不可少的相同表单的重复模板代码。由父母控制的嵌套流星(Blaze)模板

例如,这样的事情:

<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(... 

然而,这些父模板包装不会得到主的孩子的事件模板。

有没有办法做我想要的?

回答

2

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

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改变按钮的标签。