1. ホーム
  2. javascript

[解決済み] Backboneで単一のモデルをフェッチするには?

2023-02-19 09:18:54

質問

私は Clock というモデルをBackboneで作成しています。

var Clock = Backbone.Model.extend({});

から最新の情報を持つインスタンスを取得しようとしています。 /clocks/123 . 私が試したいくつかのこと。

クラスレベルのメソッドです。

Clock.fetch(123)
// TypeError: Object function (){ ... } has no method 'fetch'

インスタンスを生成し fetch を呼び出します。

c = new Clock({id: 123})
c.fetch()
// Error: A 'url' property or function must be specified

コレクション

を作成してみました。 AllClocks コレクションリソースを作成してみました (ページ上でそのようなものを使うことはないのですが)。

var AllClocks = Backbone.Collection.extend({
  model: Clock,
  url: '/clocks/'
});
var allClocks = new AllClocks();
allClocks.fetch(123);
// returns everything from /clocks/

どうすれば 1 APIでバックアップされた時計は?

どのように解決するのですか?

2番目の方法は、私が使ったことのある方法です。Clockモデルに以下を追加してみてください。

url : function() {
  var base = 'clocks';
  if (this.isNew()) return base;
  return base + (base.charAt(base.length - 1) == '/' ? '' : '/') + this.id;
},

この方法は、URLの中にハッシュバンを使って、以下のようにコントローラを実装していることが前提です。 http://www.mydomain.com/#clocks/123 のように URL にハッシュバンをつけたコントローラを実装していることを前提にしていますが、まだ実装していない場合でも動作するはずです。