首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Backbone-forms中使用自定义模板?

如何在Backbone-forms中使用自定义模板?
EN

Stack Overflow用户
提问于 2012-11-20 18:13:10
回答 1查看 2K关注 0票数 5

在我的项目中,涉及到大量验证和服务器调用的forms很少。因此,我想到了使用'backbone-forms.js'来完成这些任务。目前,我正在尝试这段代码:http://jsfiddle.net/evilcelery/VkUFu/,看看'backbone-forms.js'是否能满足我的所有需求。

但在我的工作场所,所有的html模板都应该独立于javascript的实现,这样类和标记就可以根据需要的外观进行编辑(javascript编码是基于字段ids的,不会被改变)。

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

有没有什么办法可以让我们使用编译好的handlebars模板和template.html中的所有表单域并使用Backbone.Form功能,或者这是不可能的?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-23 03:50:05

如果我很好地理解了您的问题,那么您会希望从单个源动态加载html模板模板(比如从...//category.html y.html),而不是让BackboneForms从模式中呈现它,或者必须在here等javascript代码中以丑陋的方式定义它们

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

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

Backbone.Form.setTemplates 函数体:

代码语言:javascript
复制
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);
  } 
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13470949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档