Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Model.extend无法更新集合。Backbone.js错误_Javascript_Backbone.js - Fatal编程技术网

Javascript Model.extend无法更新集合。Backbone.js错误

Javascript Model.extend无法更新集合。Backbone.js错误,javascript,backbone.js,Javascript,Backbone.js,我正在构建一个响应迅速的web框架,该体系结构完全基于Backbone.js。 计划是让它最终走向开源,让外部开发人员能够修改和编辑模型上的方法。在编写临时插件时,我注意到我的方法没有被覆盖 调试后,我意识到这是因为在集合中设置model属性时,它不是指向构造函数的指针,而是在定义集合时对构造函数的直接引用。到目前为止,我已经通过在模型扩展后立即扩展集合的model属性(使用与以前完全相同的数据)来修补这个问题。这似乎是主干中的一个普遍缺陷,还是我用错了 var MyModel = Backbo

我正在构建一个响应迅速的web框架,该体系结构完全基于Backbone.js。 计划是让它最终走向开源,让外部开发人员能够修改和编辑模型上的方法。在编写临时插件时,我注意到我的方法没有被覆盖

调试后,我意识到这是因为在集合中设置model属性时,它不是指向构造函数的指针,而是在定义集合时对构造函数的直接引用。到目前为止,我已经通过在模型扩展后立即扩展集合的model属性(使用与以前完全相同的数据)来修补这个问题。这似乎是主干中的一个普遍缺陷,还是我用错了

var MyModel = Backbone.Model.extend({
    initialize: function() {
        this.set("type", "original");
    }
})

var MyCollection = Backbone.Collection.extend({
    model: MyModel
})

MyModel = MyModel.extend({
    initialize: function() {
        this.set("type", "modified");
    }
})

var test = new MyCollection();
test.add({type:null})
test.at(0).get("type") // original

MyCollection = MyCollection.extend({
    model: MyModel
})

var test2 = new MyCollection();
test2.add({type:null})
test2.at(0).get("type") // modified
对于外部开发人员来说,重新定义保存他们所覆盖模型类型的任何集合的模型属性似乎有点错误/多余

任何想法或解决办法都将不胜感激。还是这是一个真正的缺陷? 我已经包括了一个JSFIDLE,我不确定这有多大帮助,因为它只是代码,但是如果你在backbonejs.org上复制并粘贴到chrome开发者工具中,你应该明白我的意思


提前感谢,任何想法都将不胜感激。

我已经解决了这个问题,并为此功能编写了一个小插件


上面的代码没有意义,您正在尝试使用集合的
get
方法检索模型属性
test.get(“type”)
将始终返回
undefined
。这是真的,我的错误,js fiddle是正确的代码,我提到的bug也是一个问题。我对它进行了修改,以反映这一点。它真的不是一个bug,没有任何东西不能正常工作。你的小提琴并没有测试你所说的问题。正如您所看到的,我的收藏确实使用了模型的更新版本。