1

这是我第一次使用主干表单插件,而且我也是 Backbonejs 的新手。我正在实现一个简单的表单,但渲染的标准主干表单不符合我的需求。阅读文档后发现我可以设置自定义下划线模板,但我无法理解如何呈现字段的标签。

有人能帮我吗?

编辑:

考虑到以下几点:

var form = new Backbone.Form({
  template: _.template($('#formTemplate').html()),
  schema: {
    age: { type: 'Number', title: "Age" },
    name: { title: "Name" }
  }
});

和以下模板:

<script id="formTemplate" type="text/html">
    <form>

        <div data-editors="age"><!-- age editor will be added here --></div>
        <div data-editors="name"><!-- nameeditor will be added here --></div>

    </form>
</script>

如何让 Backbone-form 自动构建标签?

就像是:

<label data-label="age"><!-- I wish the label was added here --></label>
<div data-editors="age"><!-- age editor will be added here --></div>

计算为:

<label for="c1_age">Age</label>
4

2 回答 2

6

您可以在此链接中查看标签文档:Main Attributes - Backbone Forms

您要查找的属性是title。描述:

定义出现在表单域的 . 如果未定义,则默认为camelCased 字段键的格式化版本。例如 firstName 变为 First Name。可以通过将您自己的函数分配给 Backbone.Form.helpers.keyToTitle 来更改此行为。

所以你可以使用:

var User = Backbone.Model.extend({
  schema: {
    // CHECK THE ATTRIBUTE 'title' HERE
    title: { title: 'Title', type: 'Select', options: ['Mr', 'Mrs', 'Ms'] },
    name: { type: 'Text', title: 'Your Name' }
    // ...
  }
}

如果不设置title属性,标签标题会变成camelCased字段键。

对于模板,您可以检查100% 自定义表单,这将遵循相同的逻辑,将标签放在您想要的输入后面。

编辑:

如果您只想构建标签元素,我相信这对于骨干形式是不可能的。您可以在Schema Definition中找到可能的元素。标签元素的概念是表示屏幕中另一个元素的标题。请查看MDN 上的标签文档。因此,主干表单将始终放置一个标签,但它会随输入一起提供。

我认为你可以在你的模板中放置一个标签来获得你想要的行为。

于 2013-11-13T12:24:12.317 回答
0

正如我们所看到的 - 在@evilcelery 的评论中回答。要使用自定义模板在表单中添加标签,请使用:

<script id="formTemplate" type="text/html">
    <form>
        <div data-fields="age,name"></div>
    </form>
</script>
于 2014-10-09T19:10:40.633 回答