2013-03-26 72 views
0

我想学习Backbone,我有几个视图工作得很好。这里是我的问题的看法代码:

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'); 
       } 
      }); 
     } 
     }); 

你可以看到,我取的集合,放在一个模板响应,然后显示它。我无法从我的'成功'回调中获得$ el。 $ that.el和$ that。$ el(我不知道区别)都是未定义的。我必须最终使用Jquery获取元素并按照您所看到的附加模板。这工作,但这是一个黑客,我不喜欢它。任何帮助都会很棒。

回答

0

我拿它favs是一个类或一个id。尝试添加.如果它是一个类,或者#如果它是一个ID,就在favs之前,如el: '.favs',。这是jquery选择器语法。

1

我认为你在这行

var $that = $(this); 

EL做错了,是的对象不$(本)属性。 所以,你应该只是做

var that = this; 

然后this.el不会是不确定的。检查this.el这之间的这种working example

差异$ EL

$(this.el)的基本上$ EL缓存jQuery对象。阅读更多在Backbone View Documentation

+0

'$(this)'只是包装'这个'对象 – thinklinux 2013-03-26 10:05:47

+1

@thinklinux检查这个http://jsbin.com/akovun/2/edit – sachinjain024 2013-03-26 10:13:32

+0

哦,你是对的。我的错!他需要将'favs'改为'.favs' – thinklinux 2013-03-26 10:21:15