0

私はバックボーンを学ぼうとしていますが、うまく機能しているビューがいくつかあります。これが私の問題のある見方からのコードです:

var FavoritesView = Backbone.View.extend({
        el: 'favs',
        render: function() {
            var timesheets = new TimeSheet();
            var $that = $(this);
            timesheets.fetch({
                data: { favorite: true},
                success: function(model, response, options) {
                    var template = _.template($('#favs-view').html(), { timesheets: model.models})
                    $('.favs').html(template).addClass('well');
                }
            });
        }
      });

コレクションをフェッチし、応答をテンプレートに入れて、それを表示していることがわかります。'success'コールバック内から$elを取得できません。$that.elと$that。$el(違いはわかりません)はどちらも未定義です。ご覧のとおり、最終的にJqueryを使用して要素を取得し、テンプレートを添付する必要がありました。これは機能していますが、これはハックであり、私はそれが好きではありません。どんな助けでも素晴らしいでしょう。

4

2 に答える 2

1

私はあなたがこの行で間違っていると思います

var $that = $(this);

elは、 $(this)ではなくこのオブジェクトのプロパティです。だからあなたはただやるべきです

var that = this;

そうすれば、this.elは未定義にはなりません。この作業例を確認してください

this.elとthis。$elの違い

基本的に、$ elは$(this.el)のキャッシュされたjqueryオブジェクトです。BackboneViewのドキュメントで詳細を読む

于 2013-03-26T10:01:21.370 に答える
0

私はそれfavsがクラスまたはIDだと思います。.のように、クラスの場合はaを#、IDの場合は直前にfavs追加してみてくださいel: '.favs',。これはjqueryセレクター構文です。

于 2013-03-26T09:59:08.163 に答える