2015-10-29 2 views
0

Я очень новичок в backbone.js, и я пытаюсь прочитать json-файл с базовым js. Вот мой код.Backbone.js: Прочтите json-файл

var SaveReportView= Backbone.View.extend({ 
tagName: "textarea", 
el: $('#build'), // el attaches to existing element 
events: { 
    'click #saveReport': 'saveReportHandler' 
}, 

initialize: function(){ 
    this.render(); 
}, 


render: function(){ 
    $(this.el).append("<button id='saveReport' class='btn btn-info'>Save</button>"); 

}, 

saveReportHandler: function(){  
    console.log($("#target").html()); 
    console.log($("#table-0").html()); 

    file = fopen(getScriptPath("data.json"), 0); 
    file_length = flength(file); 
    content = fread(file, file_length); 
    console.log(content); 


}, 

}); 

var reportView= new SaveReportView(); 

Это приводит к следующей ошибке в журнале консоли.

Uncaught ReferenceError: fopen is not defined 

У кого-нибудь есть идеи, что не так с моим кодом?

Спасибо

+0

Где находится ваш файл 'data.json'? – throrin19

+0

@throrin, спасибо за то, что первый поставил комментарий. Мой файл data.json находится в D-диске. Мой источник проекта также там. – Rose18

+1

Что такое 'fopen' ..? ошибка явно утверждает, что она не определена. –

ответ

2

Ну .. вы пишете PHP в файле JavaScript. Я думаю, вам нужно изучить некоторые основы веб-разработки :)

Чтобы запросить json-файл в JS на клиенте, вы используете ajax. Backbone обертывает эти данные и запрашивает их в модели или коллекции моделей.

У вас будет модель, которая делает данные fetch и заполняет модель атрибутами. Часто данные, которые вы хотите применить к модели вложено, и вы бы переопределить parse, чтобы добраться до нужного объекта, но так как вы не показали, что в JSON файла основы его является:

var ReportModel = Backbone.Model.extend({ 
    url: 'data.json' 
}); 

var reportModel = new ReportModel(); 

reportModel.fetch().done(function() { 
    console.log('successful'); 
}).fail(function() { 
    console.log('failed'); 
}); 

типичным подходом было бы передать экземпляр модели с помощью опции model при создании экземпляра представления. Затем представление отображает и/или ожидает, что выборка будет завершена на модели - this.listenTo(this.model, 'sync', this.onFetchSuccess);. Если вы потеряли все это, я рекомендую вам сначала изучить некоторые основы JS и Backbone из учебника!