2011-07-19 1 views
1

私はまだ比較的バックボーンが新しくなっています。私はちょうどそれがどのように動作するのかを理解し始めている。私はしばらくの間、Railsを使用してきました。それは、バックボーンの使用時にいくつかのヒントを与えています。ので、ここで行く:Backbone.jsコレクションのモデルにURLが設定されていないのはなぜですか?

シンプルな、私はRailsの中で、当社のモデルを超える持っているJavaScriptコンソールに私が言う

companies = new Backbone.Collection(); 
companies.url = '/companies'; 
companies.url;  // '/companies' 
companies.fetch(); 
company = companies.at(0); 
company.url 

最後の行、 "company.urlは、" 私は何を期待返すdoens't、何をI 「/ companies/12345」のようなものがありますので、会社を更新して保存すると、どこに置くのかがわかります。

だから、私は、コレクション全体に保存する必要があり、私は何かを保存したいこと毎回を意味するのでしょうか?(!)

答えて

0

私は実際に新しい企業コレクションを作成しようとする段階で間違いを犯しました。

var Companies = Backbone.Collection.extend({ 
    model: Company, 
    url : '/companies' 
}); 

var Company = Backbone.Model.extend(); 

var companies_collection = new Companies() 

companies_collection.fetch() 
companies_collection.models[0].url() // '/projects/123' 
2

私は戻っているものcompany.url()を見てみます。コレクション全体を保存する必要はありません。

+0

正しい..彼はcompany.urlされているはずです()ない会社:私は本当にこのような何かを行う必要があります

ので、代わりに

するvar会社の=新しいBackbone.Collection() .urlはモデル上のURLであり、プロパティではありません。 –

+0

ああ、私はそれを置くように言ったが、company.url()は '/ companies'を返す:( –

+0

モデルのurl()を見たときに '/ companies'会社に移入するために使用しているデータの 'id'プロパティ。 –

0

私はあなたの問題を試していましたが、モデルがIDを取得していないことがわかりました。したがって、モデルのurlメソッドは機能しません。だから私は、その後、あなたの放火犯に以下のコードを入力します(私が試したものを)以下のように

 cltn = Backbone.Collection.extend({    
      model:modelName, 
      parse:function(res){ 
       var i = 0; 
       var itms = _.map(res.items, function(o){       
        o.id = ++i; 
        return o 
       })     
       return itms; 
      } 
     }); 
     cltnInst = new cltn(); 
     cltnInst.url="/combodata.json?"; 
     cltnInst.fetch(); 

をあなたのコレクションを配置する必要があると思います。

cltnInst.url; // this is a string props. output will be "/combodata.json?" 
cltnInst.at(0).url() // this is a method props output will be "/combodata.json?/1" 

combodata.jsonは私の答えが間違っているなら、私を修正してください。この形式

{ 
"identifier": "title", 
"items": [ 
    { 
     "title": "A", 
     "tag": "htmlcss", 
     "date": "today" 
    }, ... 
]} 

のものであろう。

+0

ちょっとRajkamalさん、返事が遅くて申し訳ありませんが、私は実際にこの問題を発見したと思います。 –

関連する問題