[英]Backbone cannot use this.el immediately after it is defined
我有一個關於在聲明變量后立即使用變量的問題。
我一直試圖做這樣的事情:
var BuzzQuizView = Backbone.View.extend({
el: $('.buzz-quiz'),
liveMarked: this.el.data('live-marked'),
questionTotal: this.el.data('question-count'),
quizId: this.el.data('quiz-id'),
...
或者,如果我們將問題從Backbone移開,我總是嘗試過這樣的事情:
var $answer = $('.answer'),
$question = $answer.parent().parent();
但是我總是會出錯,對於骨干網來說,它是:
Cannot read property 'data' of undefined
在變量的情況下,我得到了錯誤:
$answer is not defined
為什么是這樣? 我只是想不通,為什么我不能使用變量? 如我所見,變量已聲明,代碼已執行,因此該變量應可用。
任何幫助將不勝感激。
----編輯----
因此,我得出上面使用var
的普通JS示例確實可以正常工作。
我要問的是為什么相同的問題仍然存在於任何類型的對象中,請以以下示例為例:
var obj = {
$body: $('body'),
allDivs: $body.find('allDivs'),
...
}
為什么此時$ body不可用?
this.el
應該指定為jQuery選擇器字符串或DOM元素 。 不是jQuery對象 ,就像您的代碼( $('.buzz-quiz')
)一樣。
另外,當您將選項傳遞給Backbone.View
構造函數時, this.el
定義。 它僅在實例化Backbone.View
才可用。
因此,您必須在Backbone.View
構造函數中初始化該屬性:
var BuzzQuizView = Backbone.View.extend({
el: '.buzz-quiz',
initialize: function() {
this.liveMarked = this.$el.data('live-marked');
this.questionTotal = this.$el.data('question-count');
this.quizId = this.$el.data('quiz-id');
}
...
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.