2012-03-06 17 views
4

Backbone.jsの使用JSON Webサービスから返された文字列の配列を処理する必要があります。このリストを取得するためにバックボーンコレクションを作成する必要がありますか?私はこの単純なコレクションを作成しましたバックボーンハンドル文字列配列

["Question Designer","Adaptive Question Designer","Clickable image map","Essay","Fill in the blanks","Maple-graded","Matching","Mathematical formula","Multipart question","Multiple choice","Multiple selection","Numeric","Palette-based symbolic editor","True/false","Other"]

データフェッチする:ここでは、データIは、Webサービスから取得される

var questionTypesCollection = Backbone.Collection.extend({ 
    url: function() { 
    return apiBase + '/questions/types'; 
    } 
}); 

をしかし、私は()のコレクションを取得しようとすると、私はこのエラーを取得する:

Uncaught TypeError: Cannot use 'in' operator to search for 'id' in Question Designer 

バックボーンではなく、それだけで生の文字列だと見てのモデルとして文字列を解析しようとしているように見えます。ビューで使用できるように、データをコレクションに取得するにはどうすればよいですか?

+0

コレクションは、モデルのコレクションです。バックボーンにモデル以外のもののコレクションのコンセプトはありません。 –

+0

私はそれを理解しています。問題は、バックボーンを使用して文字列の配列を取得する方法です。 jQuery.ajaxを使用するのは簡単ですが、Webサービスとのやり取りの一貫性を保ちたいと思います。 – spaetzel

答えて

3

あなただけの文字列が必要な場合は、あなたの最善の策は、単にjQueryの(またはZepto - $を持っているものは何でも)ができるようにするかもしれない力仕事を扱う:

var names = []; 

$.get(apiBase + '/questions/types', {}, function(result){ 
    names = result; 
}) 

フェッチが完了した後、names変数クエリの結果が入力されます。

2

これは、バックボーンコレクションがよくモデルのコレクションになるように設計されているため、これはあまり意味がありません。 ただし、parseメソッドを独自のパーサーでオーバーライドできます。