主干形成奇怪的错误/行为



简介:

我写了我的自定义主干编辑器,但主干无法初始化它,因为找不到它的架构。主干在backbone-forms.jsForm.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中,这样您就可以使用字符串作为快捷方式。

相关内容

  • 没有找到相关文章

最新更新