简介:
我写了我的自定义主干编辑器,但主干无法初始化它,因为找不到它的架构。主干在backbone-forms.js
的Form.editors
数组中查找架构如何注册自定义编辑器的模式
详细信息:
我使用主干表单,它以下一种方式初始化:
主干表单.js
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
方法,看起来像:
createSchema: function(schema) {
//........
//PROBLEM: Form.editors[schema.type] is undefined
schema.type = (_.isString(schema.type)) ? Form.editors[schema.type] : schema.type;
return schema;
}
Form.editors[schema.type]未定义。这意味着我无法创建/呈现我的自定义编辑器!
问题:在哪里/如何在Form.editors
数组中注册自定义编辑器
您可以直接从模式中引用自定义编辑器,即引用函数本身而不是字符串:
var CustomEditor = Backbone.Form.editors.Base.extend({});
var form = new Backbone.Form({
schema: {
customField: { type: CustomEditor }
}
});
或者,就像您发现的那样,您也可以将编辑器添加到Backbone.Form.editors
中,这样您就可以使用字符串作为快捷方式。