附图:
我编写自定义主干编辑器,但Backbone无法对其进行初始化,因为无法找到它的架构。 Backbone在Form.editors
的{{1}}数组中查找架构? 如何注册自定义编辑器的架构?
具体:
我使用Backbone Forms,它以下一种方式初始化:
骨架forms.js
backbone-forms.js
问题:当Backbone创建新表单时,它会调用var Form = Backbone.View.extend({
initialize: function(options) {
//.....
//Check which fields will be included (defaults to all)
var selectedFields = this.selectedFields = options.fields || _.keys(schema);
_.each(selectedFields, function(key) {
var fieldSchema = schema[key];
fields[key] = this.createField(key, fieldSchema); // <==== Here troubles begins
}, this);
},
//....
}, {
//....
editors: {} // <===== QUESTION: where I should put my custom editor in this array???
});
方法,如下所示:
createSchema
和 Form.editors [schema.type]未定义。这意味着我无法创建/渲染我的自定义编辑器!
问题: 我在 createSchema: function(schema) {
//........
//PROBLEM: Form.editors[schema.type] is undefined
schema.type = (_.isString(schema.type)) ? Form.editors[schema.type] : schema.type;
return schema;
}
数组中注册自定义编辑器的位置/方式
答案 0 :(得分:0)
您可以直接从架构中引用自定义编辑器,即引用函数本身而不是字符串:
var CustomEditor = Backbone.Form.editors.Base.extend({});
var form = new Backbone.Form({
schema: {
customField: { type: CustomEditor }
}
});
或者,就像您找到的那样,您也可以将编辑器添加到Backbone.Form.editors
,以便您可以将字符串用作快捷方式。