簡體   English   中英

Backbone.js切換彈出窗口

[英]Backbone.js toggle a popover

可以插入另一個視圖的簡單彈出視圖。 在創建時,它被引用到父視圖的視圖元素:

function(app) {

  var Popover = app.module();

  Popover.Views.Default = Backbone.View.extend({
    className: 'popover',
    initialize: function(options) {

      this.reference = options.reference;
      this.reference.bind('click', this.toggle());

      this.render();
    },
    beforeRender: function() {
      this.content = this.$el.find('.popover');
    }
    toggle: function() {
      console.log('toggle');
    }
  });

  // Required, return the module for AMD compliance.
  return Popover;
});

引用是設置popover的元素,如:

Main.Views.Start = Backbone.View.extend({
    template: "main/start",
    serialize: function() {
      return { model: this.model };
    },        
    initialize: function() {
      this.popover = new Popover.Views.Default({
          reference: this.$el.find('.member')
      });
      this.listenTo(this.model, "change", this.render);
    },
    beforeRender: function(){
      this.insertView(this.popover);
    }
  });

彈出窗口正確顯示,但是當我點擊a.member沒有任何反應。 此外,我注意到在頁面刷新時觸發了切換方法,並在日志中顯示切換。 非常扼殺。 任何想法為什么會這樣? 如何將父視圖中的鏈接單擊與彈出窗口的切換方法相關聯?

當我記錄參考時:

[prevObject: jQuery.fn.jQuery.init[1], context: undefined, selector: ".member", jquery: "2.0.0", constructor: function…]context: undefinedlength: 0prevObject: jQuery.fn.jQuery.init[1]selector: ".member"__proto__: Object[0]

您沒有正確地將事件綁定到reference ,請嘗試:

this.reference.bind('click', this.toggle);

在您創建popover對象時, $el不包含.member元素,您的日志顯示一個長度等於0的對象。確保在創建member之后創建popover ,可能在render方法之后。

暫無
暫無

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

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