2

我的流星应用程序的一部分是一个半协作表,用户可以在其中同时编辑不同的行。当用户在编辑一行时,静态文本值需要切换到输入框,以便编辑和保存这些值。我想要一个模板/助手来做到这一点,基本上我想要:

<td>
{{#if iAmEditing}}
   {{foo}}
{{else}}
   <input type="text" name="foo" value="{{foo}}">
</td>

除了有几列具有不同的“foo”值,我不想多次复制和粘贴。使用模板和助手处理此问题的正确方法是什么?

另一种方法可能是使用 HTML5contenteditable属性。无论哪种方式,使用把手模板化这些值的正确方法是什么?

4

3 回答 3

1

您应该能够与Bootstrap Editable集成

于 2013-06-13T22:22:46.153 回答
0

meteor-editable是一个新项目,它实现了类似 x-editable 的东西,但很好地与 Meteor 反应性集成。不幸的是,尚不支持内联编辑(您必须按照现在的设置方式使用弹出框)。

于 2014-05-12T21:41:18.880 回答
0

作为参考,原始问题的答案...

到今天为止,handlebars partials 不能接受除了上下文参数之外的任何东西,但是 helpers 可以。因此。您可以定义一个帮助器来设置模板的上下文:

咖啡脚本:

Handlebars.registerHelper "eventCell", (context, field, editable) ->
  return new Handlebars.SafeString(
    Template._eventCell
      _id: context._id
      field: field
      value: context[field]
      editable: editable
  )

模板:

<template name="_eventCell">
    <td><div data-ref="{{field}}" class="{{#if editable}}editable{{/if}}">
        {{value}}
    </div></td>
</template>

然后,我只使用以下内容来呈现每个字段:

{{eventCell this "province" iAmEditing}}

我最终与 bootstrap 可编辑集成,所以模板与我原来的问题有点不同。另外,我不确定这是否最好的方法,但它比我以前的清洁多了。

于 2013-06-27T21:13:01.103 回答