簡體   English   中英

在事件中為選擇器使用變量

[英]Using variable for selectors in events

由於某種原因,我需要使用一個變量作為骨干事件的選擇器,但我無法想象如何做到這一點:

app.views.Selfcare = Backbone.View.extend({
    events: {
        click window.parent.document .close : "closeWindow"
    },
    closeWindow: function() {
        //code
    }
});

我必須使用不同的范圍,我不能做“click .close”:“closeWindow”。

謝謝你的幫助。

我查看了Backbone.js的源代碼,發現如果你的視圖的events是一個函數,那么函數被調用,它的返回值被用作events對象。

這意味着您的代碼可以像這樣更改:

app.views.Selfcare = Backbone.View.extend({
  events: function() {
    var _events = {
      // all "standard" events can be here if you like
    }
    _events["events" + "with variables"] = "closeWindow";
    return _events;

  },
  closeWindow: function() {
    //code
  }
});

是源代碼中有趣的部分:

if (_.isFunction(events)) events = events.call(this);

更新:

JSFiddle HERE上提供了示例**

我不確定你能否在那里使用變量。 您可以使用內置的Events方法(請參閱文檔 )添加自定義偵聽器,然后向window.parent.document添加一個事件偵聽器以觸發該自定義事件(使用Events.trigger方法)。

也就是說,將此事件與Backbone完全分離會更容易(除非您不想這樣做),然后沿着addEventListener路由:

app.views.Selfcare = Backbone.View.extend({
    initialize: function() {
        _.bindAll(this, 'render', 'closeWindow');
        if(this.options.clickTarget) {
            this.options.clickTarget.addEventListener('click', this.closeWindow, false);
        }
    },
    render: function() {
        // Render to the DOM here
        return this; // as per Backbone conventions
    },
    closeWindow: function() {
        // Stuff here
    }
});

// Usage:
var mySelfcare = new app.views.Selfcare({
    clickTarget: window.parent.document
});

我認為這應該有用,雖然我沒有測試過(並且可能有一兩個語法錯誤!)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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