ES6中的骨干模型和集合未正确构建

时间:2016-01-24 19:18:03

标签: javascript backbone.js

我正在使用Backbone在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
});

但是在house.each回调中,植物对象没有它应该具有的属性

例如console.log(plant.get('name'))是默认值'未指定'

在ES6中没有很多关于Backbone的工作示例,但是从存在的少数几个看起来我看起来并没有做出与那些不同的事情。有什么指针吗?

编辑:

我现在也尝试使用非ES6,同样的情况发生了

let Plant = Model.extend({
    defaults: {
        name: "Not specified",
        height: 0
    }
});

var Greenhouse = Collection.extend({
    model: Plant
});

2 个答案:

答案 0 :(得分:0)

您的import语句有拼写错误(已在later revision中更正):

import { Model, Collection } from 'backbone';

除了其余的片段seems to work之外。

如果它没有帮助,请考虑在小提琴中重现问题。

答案 1 :(得分:0)

这是我有过的最奇怪的事情。

我有import { Collection } from 'Backbone'而不是backbone

出于某种原因,这并没有给出任何错误,我猜测它仍然可以找到Backbone但是在不同的实例下加载它,可能与webpack如何需要文件有关