在我的项目中,涉及到大量验证和服务器调用的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功能,或者这是不可能的?
谢谢。
发布于 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 函数体:
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);
} https://stackoverflow.com/questions/13470949
复制相似问题