0

バックボーンコレクションを使用してファイルからJSONを読み込んでいます。ファイルの同じコンテンツを取得して配列に入れ、url関数を呼び出すと、何も機能しないようです。助けてください。

var cool = {};
cool.Item = Backbone.Model.extend({});
cool.Items = Backbone.Collection.extend({
        model: cool.Item,
                url: "data.json"

このコードは機能します

var cool = {};
cool.Item = Backbone.Model.extend({});
cool.Items = Backbone.Collection.extend({
        model: cool.Item,
                url: this.return(cool_cont());

function cool_cont()
{
* JSON object*
} 

このコードは機能しません。

4

1 に答える 1

2

この中のあなたの論理にはいくつかの誤りがあります。ここで機能する例は、url-attributeをとして定義することですdata.json。フェッチすると、BackboneがajaxそのURLに対して-requestを実行し(ファイルに遭遇)、そこにコンテンツ(jsonデータ)が返されます。

今、あなたの2番目の試みは、すべてがうまくいかないところです。初めに:

url: this.return(cool_cont());

私はこれが何をするのか(またはおそらくそうしないのか)わかりません、そして私は知りたくありません。url-attribute / functionの基本的な前提は、

コレクションのurlプロパティ(または関数)を設定して、サーバー上のその場所を参照します。

-Backbone.jsドキュメントからの引用(実話)

したがって、ここで行うことは、コレクションに入力するデータをサーバー上のその場所への参照として渡すことです(率直に言って、それを行っていないこともあると思います)。これは明らかに間違っています。

したがって、url == path_to_your_data_be_it_url_or_file

urlは、文字列(静的パスとも呼ばれます)または関数(たとえば、モデルの一部の属性をモデルの一部として使用してパスを作成する)のいずれかになります。

コレクションに偽のデータを挿入したいが、外部ファイルを使用したくない場合は、次のようにします。

var json_data = [
  {"foo": "bar"}, // model 1
  {"foo": "bar2"}, // model 2
  ...
  {"foo": "barN"}, // model N
];

var options = {...}; // optional

var myCollection = new MyCollection(json_data, options);

お役に立てれば!

于 2012-08-14T10:22:07.380 に答える