将Backbone Collection对象转换为其原始类型

时间:2015-03-16 07:59:18

标签: javascript jquery backbone.js backbone-collections

我使用骨干js将自定义元素添加到骨干js Collection。

我需要将其转换回原来的类型
var Text = function () {

};

var Radio = function () {

};

function myfunction() {
    var collection = new Backbone.Collection();
    var t = new Text();
    var r = new Radio();
    collection.add(t);
    collection.add(r);

    alert(t instanceof Text);
    alert(collection.at(0) instanceof Text);

}

语句alert(t instanceof Text);返回true作为语句

alert(collection.at(0) instanceof Text); returns false .

有什么办法可以把它变成原来的类型吗?

1 个答案:

答案 0 :(得分:2)

你不能。

    collection.add(t)未继承collection.add(new Backbone.Model(t)) 1

    时,
  • t相当于Backbone.Model

  • Backbone.Model的构造函数通过Model.sett的属性复制到新对象中,但不保留源对象上的任何其他信息 2

如果可以,请将Backbone.Model扩展为构建TextRadio

var Text = Backbone.Model.extend({

});

如果没有,则必须在属性中添加其他信息以识别正确的原型。


1 Annotated source code, Collection._prepareModel
2 Annotated source code, Model.set