2015-03-14 2 views
1

Я пытаюсь использовать Backbone.Model как класс ES6. Это мой код:Использование Backbone.Model как класс es6

import Backbone from 'backbone'; 
import $ from 'jquery'; 
Backbone.$ = $; 

class DataManager extends Backbone.Model { 
    url() { 
     return 'api.json'; 
    } 
    parse(data) { 
     console.log(data); 
     return data; 
    } 
    constructor() { 
     this.fetch() 
    } 
} 

export default DataManager; 

api.json простой JSON-файл, содержащий: {test:1}

fetch вызова успешно получает данные (метод синтаксического анализа console.log показывает его), но я получаю следующее сообщение об ошибке :

Uncaught TypeError: Cannot read property 'test' of undefined 

код работает, если я переключиться на синтаксис ES5: Backbone.Model.extend({...});

Может кто-нибудь объяснить?

ответ

2

Чтобы вызвать конструктор родительского класса, вы должны вызвать super() внутри вашего конструктора.

1

Не выполняйте поведение, подобное этой выборке, из вашего конструктора. Он был помещен в метод для использования в любом месте, но в конструкторе. Сначала вы создаете объект, а затем говорите ему, что делать. Не запускайте его при его создании.

Смежные вопросы