2013-07-15 57 views
0

我使用主幹事件將上下文(視圖對象)綁定到事件處理程序,這雖然有點不錯,但問題是沒有任何在初始化方法中設置的屬性似乎遵循以及事件觸發時的上下文。下面的代碼說明了這個問題:不支持當前狀態的主幹事件上下文

define(['backbone'], function(Backbone) { 

     var PageView = Backbone.View.extend({ 

      /* Globals */ 
      pageExist: false, 

      initialize: function(options) { 
       var self = this; 
       self.pageExist = true; 

       // _mediator is passed during instantition of the view 
       // I've removed the code here as it's not relevant for this problem 
       self._mediator.on("pin:add", self._pinAddCB, self); 

       // Using bindAll seems a little bit better as the context now carries the aditional method that i added on this view (like _pinAddCB) 
       _.bindAll(); 

      }, 


      _pinAddCB: function() { 
       console.log(this.pageExist) // FALSE ?? 
      } 
     }); 

     return PageView; 
    }); 

關於如何去做這件事的任何想法?

回答

0

您是否嘗試過您的示例中的代碼是如何工作的?因爲它應該正常工作。

  1. _.bindAll();在最新版本的下劃線中導致錯誤。
  2. 或許pageExist被其他方法修改。
+0

1 -I've曾嘗試使用和不使用_.bindAll,它似乎更接近它,​​沒有它上下文是視圖,但我添加到它的方法似乎不遵循,因爲當使用bindAll他們做 2-pageExist只在這個模塊中使用,除了我有其他屬性,也設置在initialize方法和相同的行爲。 – silkAdmin

+1

http://jsfiddle.net/PQ9Sy/你在其他地方有問題 –

+0

是的,我剛剛發現問題,很奇怪,視圖使用的是未保存的模型,並且我對它調用了同步,不知何故它搞砸了在一個非常非常奇怪的方式支持骨幹..我只是改變它保存,現在它的作品proprely.THanks幫助 – silkAdmin

相關問題