Javascript ES6中的主干模型和集合是';t正确构造
我正在使用主干网在ES6中创建一些模型和集合,如下所示Javascript ES6中的主干模型和集合是';t正确构造,javascript,backbone.js,Javascript,Backbone.js,我正在使用主干网在ES6中创建一些模型和集合,如下所示 import { Model, Collection } from 'backbone'; class Plant extends Model { defaults() { return { name: 'Not specified', height: 0 } } } class Greenhouse extends Collection {
import { Model, Collection } from 'backbone';
class Plant extends Model {
defaults() {
return {
name: 'Not specified',
height: 0
}
}
}
class Greenhouse extends Collection {
constructor(options) {
super(options);
this.model = Plant;
}
}
let plant1 = new Plant({ name: 'Rose' });
let plant2 = new Plant({ name: 'Daisy' });
let house = new Greenhouse([plant1, plant2]);
house.each(function(plant) {
// Do something with plant here
});
但是在房子里,植物对象没有它应该具有的属性
例如,console.log(plant.get('name'))
是默认值“未指定”
ES6中主干网的工作示例并不多,但从现有的少数几个示例来看,我所做的与这些示例没有什么不同。有什么建议吗
编辑:
我现在也尝试了非ES6,同样的情况也发生了
let Plant = Model.extend({
defaults: {
name: "Not specified",
height: 0
}
});
var Greenhouse = Collection.extend({
model: Plant
});
您的导入语句有输入错误(在a中更正): 除此之外,其余的代码片段也会按预期的那样进行
如果没有帮助,请考虑用小提琴复制这个问题。 这是我做过的最奇怪的事情 我从“主干”导入了
import{Collection},而不是Backbone
出于某种原因,这没有给出任何错误,我猜测这与查找主干有关,但在另一个实例下加载它,可能与webpack需要文件的方式有关为什么不使用主干的扩展方法?因为这似乎是ES6的方法,我错了吗?使用ES6扩展在这里完成了:我是在解释我的原始代码,import语句是正确的。我曾经尝试过用小提琴来复制,但是让主干网在使用ES6的JSFIDLE/codepen中工作是一个噩梦。到底是什么问题?你能提供主干网和巴别塔的具体版本吗(假设这是你的transpiler)?我的答案中的链接指向一把小提琴,在那里,除了导入,一切都是一样的。我至少找到了一些东西。如果我传入一个对象,而不是模型的实例,则集合在添加时会将其转换为模型。我希望能够传入模型,而不是传入对象。主干版本是1.2.3,这是您的原始代码:let house=新温室([plant1,plant2])代码>似乎工作得很好。是的,这和我的代码之间的唯一区别是它被分割成几个不同的文件,并与Webpack捆绑在一起。属性不是保存在模型[x].attributes中,而是保存在模型[x].attributes.attributes中
import { Model, Collection } from 'backbone';