0

简短的:

我编写了我的自定义主干编辑器,但 Backbone 无法初始化它,因为找不到它的架构。Backbone 在Form.editors数组中查找模式backbone-forms.js如何注册自定义编辑器的架构?

详细的:

我使用以下方式初始化的主干表单:

骨干-forms.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???
});

问题:当 Backbone 创建新表单时,它会调用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] 是 undefined。这意味着我无法创建/渲染我的自定义编辑器!

问题:在哪里/如何在 数组中注册我的自定义编辑器?Form.editors

4

1 回答 1

0

您可以直接从架构中引用自定义编辑器,即引用函数本身而不是字符串:

var CustomEditor = Backbone.Form.editors.Base.extend({});

var form = new Backbone.Form({
  schema: {
    customField: { type: CustomEditor }
  }
});

或者,就像您发现的那样,您也可以将编辑器添加到,Backbone.Form.editors以便您可以将字符串用作快捷方式。

于 2014-10-22T09:05:11.440 回答