为什么在页面刷新或页面加载时 el 未定义?是因为 el 不存在吗?
class ListView extends Backbone.View
className: 'channels-list'
el: '#main'
initialize: ->
console.log @el
# undefined
为什么在页面刷新或页面加载时 el 未定义?是因为 el 不存在吗?
class ListView extends Backbone.View
className: 'channels-list'
el: '#main'
initialize: ->
console.log @el
# undefined
元素需要是标签名称或已存在于 DOM 中的元素。创建新视图时,将_ensureElement
调用该函数:
// Ensure that the View has a DOM element to render into.
// If `this.el` is a string, pass it through `$()`, take the first
// matching element, and re-assign it to `el`. Otherwise, create
// an element from the `id`, `className` and `tagName` properties.
_ensureElement: function() {
//...
}
为避免这种情况,请将 script 标签放在元素标签下方或等待文档加载事件,例如使用 jQuery:
jQuery ->
class ListView extends Backbone.View
className: 'channels-list'
el: '#main'
initialize: ->
console.log @el
或者,正如 Vitaliy 建议的那样,.el
在initialize
函数中休息。