javascript – 如何在Backbone表单中使用自定义模板?

前端之家收集整理的这篇文章主要介绍了javascript – 如何在Backbone表单中使用自定义模板?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我的项目中有很少的表单涉及大量的验证和服务器调用.所以,我想过为这些使用’backbone-forms.js’.目前我正在玩这个代码http://jsfiddle.net/evilcelery/VkUFu/,看看’backbone-forms.js’是否满足我的所有需求.

当然,我们可以将自己的自定义模板提供给各个组件,例如https://github.com/powmedia/backbone-forms#customising-templates中定义的“list”,“date”等.但在我的工作场所,所有html模板都应独立于javascript实现,以便可以基于类和标记进行编辑在所需的外观上(javascript编码基于不会被改变的字段id).我的问题是我无法将自己的自定义模板用于使用’backbone-forms.js’构建的表单.

有没有办法让template.html独立于javascript(就像handlebars.js一样)?

有没有我们可以使用编译的把手模板与template.html中的所有表单字段并使用Backbone.Form功能或这是不可能的?

谢谢.

最佳答案
如果我理解你的问题,你想动态加载来自各个源的html模板(比如来自… / templates / category.html),而不是让BackboneForms从模式中渲染它,或者必须以丑陋的方式定义它们.像here这样的javascript代码

您可以随时使用ajax(或更好,使用Require.js)将html模板加载为字符串,并调用Backbone.Form.setTemplates({templateName:templateBodyAsString}).它不会覆盖其他已注册的其他名称模板,请参阅下面的setTemplates实现.

如果使用$.ajax(),则可以将表单呈现代码放入成功回调中.如果您使用Require.js,如果您的所有BB模块/表单每次都加载自己的模板,那么它将更容易,更不用说它的缓存机制了,然后Require.js只会在模块第一次需要时执行ajax请求相同的模板.

Backbone.Form.setTemplates函数的主体:

function (templates,classNames) {
    var createTemplate = helpers.createTemplate;

    Form.templates = Form.templates || {};
    Form.classNames = Form.classNames || {};

    //Set templates,compiling them if necessary
    _.each(templates,function(template,key,index) {
      if (_.isString(template)) template = createTemplate(template);

      Form.templates[key] = template;
    });

    //Set class names
    _.extend(Form.classNames,classNames);
  } 

猜你在找的JavaScript相关文章