簡體   English   中英

定義后,骨干無法立即使用this.el

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM