web-dev-qa-db-ja.com

Backbone.jsで「url」プロパティまたは関数を指定する必要があるエラー

私はバックボーンがどのように機能するかを学ぶために小さなアプリを作ろうとしています。私は Todo と呼ばれるソースからアプリの例を取り上げました。 Todoアプリのスニペットを使用して、アプリを最初から作成しました。これらのアプリは非常によく似ていると思いますが、なんらかの理由で、サンプルアプリでうまく機能しないものを機能させることができません。エラーが発生します:

A 'url' property or function must be specified

もう1つの問題は、サンプルコードからこのコードを機能させることができないことです。

this.model.bind('change', this.render);

Bindのような関数はないということです。すべてのライブラリのバージョンとコードをチェックしましたが、何が悪いのか理解できません。これについて私は何ができますか?

28
Sergei Basharov

TODOの例はlocalStorageに依存しているため、URLは定義されていません(ローカルであるため)。ただし、デフォルトのBackbone.sync実装を使用する場合は、コレクションとモデルにURL属性を定義する必要があります(静的または関数のどちらでもかまいません)。そうしないと、エラーが発生します。

This.model.bindについては、モデルへの参照がどういうわけか失われたと思います。 2つのこと:thisはあなたが思っているものではないか、またはthis.modelが定義されていません。完全な回答を得るには、さらにコードを投稿してください。

37
Julien

コレクションは、URLのjson出力から一連のモデルをロードしようとします。

window.MyList = Backbone.Collection.extend({
  model: MyModel,
  url: 'someurl.json', // load a bunch of json objects into models.
});

そのURLがモデルのjson出力を指す場合は、問題ありません。

コレクションがレガシーサーバーまたはローカルストレージアダプターをサポートするためにサーバーがRESTfulにコールバックする方法をオーバーライドすることもできます。 http://documentcloud.github.com/backbone/#Sync

3
Rimian

コレクションプロパティのURLへの割り当てがうまくいきました

todoList.url = "/GetData/GetTodo";
0
sairfan