骨干表单和自定义模板

时间:2013-11-13 11:44:21

标签: forms templates backbone.js underscore.js backbone-forms

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

有人可以帮助我吗?

编辑:

考虑以下因素:

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>

2 个答案:

答案 0 :(得分:6)

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

您要查找的属性是标题。说明:

定义表单字段中显示的文本。如果未定义,则默认为camelCased字段键的格式化版本。例如。 firstName成为名字。通过将自己的函数分配给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% custom forms,它将遵循相同的逻辑,放置标签后跟您想要的输入。

修改

如果你只想构建标签元素,我相信骨架形式是不可能的。您可以在Schema Definition找到可能的元素。标签元素的概念是表示屏幕中另一个元素的标题。请检查Label Documentation at MDN。因此,骨干表格总是会放置一个标签,但它会带有输入。

我认为您只需在模板中放置一个标签即可获得所需的行为。

答案 1 :(得分:0)

我们可以看到 - @evilcelery在评论中回答。对于使用自定义模板的表单中的标签:

<script id="formTemplate" type="text/html">
    <form>
        <div data-fields="age,name"></div>
    </form>
</script>