Неслучайно новый для JavaScript, так что это может быть вопрос noobish.Javascript Модель базовой конструкции
На данный момент для моего проекта я использую NodeJS для своего сервера и Backbone для клиента. Клиент отправит запрос на сервер, и сервер отправит список файлов на сервере, моя цель состояла в том, чтобы просто вернуть список файлов, и когда пользователь нажмет на файл, он отправит на сервер другой запрос на загрузку файла ,
В настоящее время на уровне клиента моя модель и сбор определяется что-то вроде:
app.MyFile = Backbone.Model.extend({
defaults: {
modifiedDate: new Date(),
path: '',
content: '' // content of the file
}
});
var MyFileList = Backbone.Collection.extend({
model: app.MyFile,
url: '/api/files'
});
// create global collection of files
app.MyFiles = new MyFileList();
app.AppView = Backbone.View.extend({
initialize: function() {
// fetch all files
app.MyFileList.fetch();
}
});
// app.js (point of entry)
$(function() {
// Kick things off by creating the **App**.
new app.AppView();
});
И мой код сервера:
var application_root = __dirname,
express = require("express"),
...
app.get('/api/files', function(req, res) {
...
// return file list
}
app.get('/api/files/:id', function(req, res) {
...
// return file content?
}
Поскольку это не имеет смысла, чтобы загрузить все файлы в каталог и отправить его обратно клиенту, что я сделал, я создал модель на сервере и заполнил modifiedDate
и path
, оставив content
до null
. Но проблема теперь в том, что как я могу заполнить content
, когда пользователь нажимает на файл? Я не уверен, как вручную отправлять HTTP-запрос с Backbone View или контроллера. Или есть лучший способ сделать это? Один из способов, о котором я могу думать, - создать еще одну модель, которая поддерживает только modifiedDate
и path
, но для меня это выглядит очень много и многократно.
удивительных. Я не знал, что вы можете вызвать fetch() из модели. Должно быть, пропустили его, читая api. Благодаря! – GantengX