noo*_*der 5 javascript backbone.js
forms我的项目中很少涉及大量验证和服务器调用.所以,我想用'backbone-forms.js'这些.目前我正在玩这个代码:http://jsfiddle.net/evilcelery/VkUFu/ ,看看是否'backbone-forms.js'满足我的所有需求.
当然,我们可以提供我们自己的自定义模板,individual components如https://github.com/powmedia/backbone-forms#customising-templates中定义的'list','date'等.但是在我的工作场所,所有html模板应该独立于javascript实现,以便可以根据所需的外观编辑类和标记(javascript编码基于ids不会被更改的字段).我的问题是我无法使用自己的自定义模板来构建使用的表单'backbone-forms.js'.
有没有办法让template.html独立于javascript(就像handlebars.js一样)?
有没有我们可以使用编译的把手模板与template.html中的所有表单字段并使用Backbone.Form功能或这是不可能的?
谢谢.
如果我很好地理解你的问题,你想动态地从各个源加载html模板(例如从.../templates/category.html),而不是让BackboneForms从架构中渲染它或必须以丑陋的方式定义它们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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1991 次 |
| 最近记录: |