1

私はpeepcodebackbone.jsの基本チュートリアルを実行しており、コードがスクリーンキャストと同じであることがわかる限り、コンソールの動作は大きく異なります。

私のChromeコンソール(スクリーキャストで使用)はこの結果を生成します。

albums = new Albums()
child
albums.fetch()
Object
albums.models()
TypeError: Property 'models' of object [object Object] is not a function

スクリーンキャストコンソールは次のようになります

albums = new Albums()
inherits.child
albums.fetch()
inherits.child
albums.models()
[ inherits.child, inherits.child ]

これがどこでバラバラになっているのか、私は完全に迷っています。それは私のコード(以下を参照)、私のブラウザ、または何か他のものですか?

(function($) {

window.Album = Backbone.Model.extend({

    isFirstTrack: function(index) {
        return index == 0;
    },

    isLastTrack: function(index) {
        return index >= this.get('tracks').length - 1;
    },

    trackUrlAtIndex: function(index) {
        if (this.get('tracks').length >= index) {
            return this.get('tracks')[index].url;
        }
        return null;
    }

});

window.Albums = Backbone.Collection.extend({
    model: Album,
    url: "/albums"
});


window.AlbumView = Backbone.View.extend({
    tagName: 'li',
    className: 'album',

    initialize: function() {
        _.bindAll(this, 'render');
        this.model.bind('change', this.render);

        this.template = _.template($('#album-template').html());
    },

    render: function() {
        var renderedContent = this.template(this.model.toJSON());
        $(this.el).html(renderedContent);
        return this;
    }

});

})(jQuery)
4

1 に答える 1

1

コードは問題ありません。example/screencastにエラーがあるか、古いbackbonejs実装を使用していて、古いchromeを使用しているため、子とinherits.childの出力があります。

  • fetchはオブジェクトを返す必要があります-これはjqueryの遅延オブジェクトであり、成功とエラーのコールバックを解決するために使用できます(jquery APIドキュメントで遅延されたjqueryの詳細を確認してください-素晴らしいものです!)
  • モデルメソッドはありませんBackbone.Collection-これはモデルインスタンスのプロパティであり、でalbums.modelsはなくによってアクセスする必要がありますalbums.models()
于 2012-07-17T13:01:05.480 に答える