我正在使用backbone.js 创建一个包含Like
按钮的视图。这个 View 的模型中包含 属性is_liked
,如果它的值为1
,那么setStateLike
调用的函数会改变Like
按钮的样式。
问题:我无法选择功能中使用的this.setStateLike()
按钮initialize
。这样做只会返回一个[]
. 但是,当我定义this.setStateLike
为单击事件处理程序时,选择按钮有效!奇怪的是,this.setStateLike()
被调用的 insideinitialize
是可以选择$(this.el)
的,但不是$(this.el).find()
!
知道这里发生了什么以及如何解决吗?谢谢!
PhotoListItemView = Backbone.View.extend({
tagName: 'div',
className: 'photo_box',
events: {
'click': 'setStateLike'
},
initialize: function() {
this.setStateLike();
},
render: function() {
$(this.el).html( this.template( this.model.toJSON() ) );
return this;
},
setStateLike: function() {
console.log( $(this.el).find('#like') ); // returns []
if(this.model.get('is_liked')) {
console.log( $(this.el) ); // returns correctly
console.log( $(this.el).find('#like') ); // returns []
// Change icon to Active state
$(this.el).find('#like.photo_btn').addClass('photo_btn_active').attr('id', 'unlike');
}
}
});