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 要求を送信する方法がわかりません。または、これを行うより良い方法はありますか?私が考えることができる1つの方法は、保持するだけの別のモデルを作成することmodifiedDate
ですpath
が、私にはこれは非常に冗長で反復的に見えます.