0

これが私のBackbone.jsです:

(function() {
    window.App = {
        Models: {},
        Collections: {},
        Views: {},
        Router: {}
    };

    window.template = function(id) {
        return _.template( $('#' + id).html() );
    };

    var vent = _.extend({}, Backbone.Events);

    App.Router = Backbone.Router.extend({
        routes: {
            '' : 'index',
            '*other' : 'other'
        },
        index: function() {

        },
        other: function() {

        }
    });


    App.Models.Main = Backbone.Model.extend({
        defaults : {
            FName: ''
        }
    });

    App.Collections.Mains = Backbone.Collection.extend({
        model: App.Models.Main,
        initialize: function() {
            this.fetch({
                success: function(data) {
                    console.log(data.models);
                }
            });
        },
        url: '../leads/main_contact'
    });

    App.Views.Mains = Backbone.View.extend({
        tagName: 'ul',
        initialize: function() {
            this.collection.on('reset', this.render, this);
            console.log(this.collection);
        },
        render: function() {
            return this.collection.each(this.addOne, this);
        },
        addOne: function(main) {
            var mainC = new App.Views.Main({ model: main});
            this.$el.append(mainC.render().el);
            return this;
        }
    });

    App.Views.Main = Backbone.View.extend({
        tagName: 'li',
        template: template('mainContactTemplate'),
        render: function () {
            this.$el.html(this.template(this.model.toJSON()));
            return this;
        }

    });

    mains = new App.Collections.Mains();
    main = new App.Views.Main({ collection: mains});

    new App.Router;
    Backbone.history.start();
})();

私がやりたいのは、で返されるデータulをと呼ばれるDOM要素にバインドすること$('#web-leads')です。このコードを前提として、どうすればよいですか?ちなみに、私はすでにこれについてここに投稿し、最初の答えと2番目の答えを組み合わせてフォローしようとしました。しかし、それでもHTMLとデータをDOMにバインドすることはできません。私のコレクションではデータがサーバーから正しく返されているので、それが問題ではないことはわかっています。ルーターのことは気にしないでください。それは後でです。

4

1 に答える 1

2

通常、バックボーンでは、DOM要素にデータを配置しません。そのDOM要素をラップするビューにデータを配置します。

そうは言っても、本当に要素にデータを格納したい場合、jQueryにはそのための関数があります。

$('#web-leads').data('someKey', 'yourData');

次に、次の方法でそのデータを取得できます。

$('#web-leads').data('someKey');

* 編集 *

OPとのコメントディスカッションで、本当の目標は単にビューの要素をページ上の要素に追加することであることが明らかになりました。追加される要素がである場合、#web-leadsこれは次の方法で実行できます。

$('#web-leads').append(theView.render().el);
于 2013-01-04T21:56:56.433 に答える