【发布时间】:2014-02-12 05:08:11
【问题描述】:
我想包含一个模板(或使用助手,我不在乎),可以点击该模板进行就地编辑。此视图必须是可重用的,因此不能依赖 Session 变量或视图实例不包含的任何其他变量。
在显示模式下它看起来像这样:
<div class="editable">{{content}}</div>
当你点击它时会变成编辑模式,看起来像这样:
<input type="text" value="{{content}}" />
您可以通过按回车键或按下按钮恢复到显示模式(适当地保持其更改)。
自从我第一次尝试使用 html 以来,似乎流星并没有让这变得非常容易:
<template name="editable">
{{#if editing}}
<input type="text" value={{this}} />
{{else}}
<div class="edit-thing">{{this}}</div>
{{/if}}
</template>
// In the appropriate display template.
{{> editable stuff}}
和js:
Template.user.stuff = "yo yo yo";
Template.editable.events({
'click .edit-thing': function(e) {
this.isEditing = true;
}
});
Template.editable.helpers({
editing: function() {
return !!this.isEditing;
}
});
遇到了不响应式的问题,使用 Deps 库并没有解决这个问题。 (当您单击此版本时,它不会更改,因为 this.isEditing 不是响应式的,并且不会触发 editing 帮助程序的更改。)
如果您愿意,请询问更多信息!谢谢!
【问题讨论】:
-
这是一个经典案例,当访问
template instancein the helper functions 会使任务变得更容易和更少hacky(无需偷偷地向this.data添加属性,这应该是 只读在created函数中)。
标签: meteor handlebars.js