1

Backbone でビューを作成しようとしていて、ノードが必要なライブラリをロードしようとしています。モデル/コレクションからコンソールに出力できますが、ビューの作成を開始すると、「インスタンスのチェックで関数を期待していますが、本体を取得しました」というエラーが表示されます。$(function()({}) を介してビューを読み込もうとしましたが、 $('document').ready も試しましたが、うまくいきませんでした - ここで何が欠けているか、間違っているかについての提案。ありがとう

    var express = require('express');
    var $ = require('jQuery');
    var _ = require('underscore');
    var Backbone = require('Backbone');
    var app = express();

    app.use(express.static(__dirname + '/'));
    app.listen(process.env.PORT || 3000);

    var myModel = Backbone.Model.extend();
    var myCollection = Backbone.Collection.extend({
        model: myModel,
        url: "myjson.json",
        parse: function(response) {
            return response.cars;
        }
    })

     var cars = new myCollection();

    var myView = Backbone.View.extend({

        el: 'body',

        initialize: function() {

            cars.fetch();
            this.render();
        },
        events: {
            'click div.test': 'render'
        },
        render: function() {

            cars.each(function(myModel) {
                var _comp = myModel.get('make');
                $('div.new_test').append(_comp);

                console.log(_comp);
                return this;
            })
        }
    })

     var yourView = new myView();
4

2 に答える 2

0

もしかしたらこれが問題かもしれません。

initialize: function() {
     cars.fetch();
     this.render();
},

コレクション( Asynchronous )をフェッチし、すぐに render メソッドを呼び出しています。

代わりに、コレクションのイベントをリッスンしreset、コレクションにデータが入力された後に発生します

initialize: function() {
     this.listenTo(cars, 'reset', this.render);
     cars.fetch();
},

をループのreturn this外に移動します。$.each

于 2013-07-20T18:47:27.483 に答える