0

Backbone に慣れるために、いくつかの演習を行っています。urlRootのプロパティを使用して、サーバーから JSON ファイルを取得しようとしていますModel

入力時にファイルが見つからないというエラー(404)が表示されますurlRoot: "./js/json/todo"が、この方法で入力すると、ファイルは見つかりますurlRoot: "./js/json/todo.json"が、.console.log(todoItem.get('description'))undefined

現在、私が見た多くのバックボーン アプリケーションでは、ほとんどの場合、拡張子.jsonは適用されていませurlRool: "/todos"urlRoot: "/todos.json"。しかし、拡張機能なしで実行すると、エラーが発生します。

  • url誰かが使用方法とurlRootプロパティを適切に説明できますか?
  • また、それを使用しない、.jsonまたは使用しないことの問題は何ですか?
  • 最後に、以下の JSON ファイル形式はバックボーンに適していますか?

背骨:

(function(window, $, Backbone) {
    var TodoItem = Backbone.Model.extend({ urlRoot: './js/json/todos' });

    var todoItem = new TodoItem({id: 1});

    todoItem.fetch();

    console.log(todoItem.get('description')); // This is undefined in the console

}(window, jQuery, Backbone));

JSON:

{
    "todos": [
    {
        "description": "Pick Up Milk",
        "status": "incomplete"
    },

    {
        "description": "Do shopping at Market",
        "status": "incomplete"
    }]
}
4

2 に答える 2

1

.jsonエンドポイントが存在する限り、使用しているかどうかは関係ありません。したがって、ファイルに名前をtodo.json付ける場合は、.json. これをテストする 1 つの方法は、ファイルの URL を切り取ってブラウザーに貼り付け、正しく表示できるようにすることです。

undefinedJSONファイルのフォーマットが原因で、あなたが得ていると思います。descriptionオブジェクトの最上位には存在しません。Modelsバックボーンは、 の配列を含むオブジェクトではなく、の配列を予期しますModels。例えば:

[{
    "description": "Pick Up Milk",
    "status": "incomplete"
},
{
    "description": "Do shopping at Market",
    "status": "incomplete"
}]

urlコレクションにurlRoot適用され、個々のモデルに適用されます。これにより、セマンティック ネーミング スキーマを作成できます。たとえば、API にアクセスするには、次のスキーマを使用します。

GET /todos - Get all todos
GET /todo/:id - Get one todo

urlto/todosurlRoottoを設定することでこれを行うことができます/todo。バックボーンは自動的に ID を追加します。が定義さurlRootれている限り、オプションであることに注意してください。url

于 2013-07-09T03:20:07.963 に答える