0

この問題に対するあらゆる種類の解決策を読んで試してみたにもかかわらず、コレクション内のモデルにアクセスするのに苦労しています - 明らかに得られていないものがあります - 助けてください!

次のように、データが XML ファイルから取得されるコレクションがあります。

define([
    'underscore', 
    'backbone',
    'localstorage',
    'models/script/ScriptModel'
], function(_, Backbone, LocalStorage, ScriptModel) {

    var ScriptsCollection = Backbone.Collection.extend({ 

        model : ScriptModel,

        url: '/data/script.xml',

        parse: function (data) {
        var parsed = [];
            $(data).find('play').each(function (index) {
                var title = $(this).find('title').text();
                var author = $(this).find('author').text();
                parsed.push({
                    title: title,
                    author: author
                });
            });

            return parsed;
        },

        fetch: function (options) {
            options = options || {};
            options.dataType = "xml";

            return Backbone.Collection.prototype.fetch.call(this, options);
        }
    });

    return ScriptsCollection;
}); 

これはすべて正常に機能しているようです。私の見解では、次のことを行います。

define([
    'jquery', 
    'underscore', 
    'backbone',
    'views/settings/SettingsView',
    'models/script/ScriptModel', 
    'collections/scripts/ScriptsCollection',    
    'text!templates/script/scriptTemplate.html'
],    
    function($, _, Backbone, SettingsView, ScriptModel, ScriptsCollection,  scriptTemplate) {

    var ScriptView = Backbone.View.extend({
        el : $("#container"),

        initialize: function(){
            this.collection = new ScriptsCollection();    
            this.collection.fetch();
        },

        render : function() {            
            this.$el.html(scriptTemplate);

            //add the settings view
            var settingsView = new SettingsView();
            settingsView.render();            
        }
    });

    return ScriptView;
});

コンソール ログ 'this.collection' を実行すると、次のように表示されます。

child {length: 0, models: Array[0], _byId: Object, constructor: function, model: function…}
    _byId: Object
    length: 1
    models: Array[1]
    0: child
    _changing: false
    _events: Object
    _pending: false
    _previousAttributes: Object
    attributes: Object
    author: "Eric and Ernie"
    title: "The Play Wot I Wrote"
    __proto__: Object
    changed: Object
    cid: "c3"
    collection: child
    __proto__: Surrogate
    length: 1
    __proto__: Array[0]
    __proto__: Surrogate

「モデル」では、「属性」でデータを確認できますが、「this.collection.models」をログに記録すると、空の配列が表示されます。モデルの長さが0であることもわかるので、これで混乱しますか??

なぜこれが事実なのか理解できないようですが、私の推測では、ここで基本的な何かが欠けているだけですか?? - バックボーン初心者さん、恐るべし!

任意のアイデア........誰か??

前もって感謝します

4

1 に答える 1