Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/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 ES6中的主干模型和集合是';t正确构造_Javascript_Backbone.js - Fatal编程技术网

Javascript ES6中的主干模型和集合是';t正确构造

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 {

我正在使用主干网在ES6中创建一些模型和集合,如下所示

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';