2017-06-09 61 views
4

我花了幾天時間摸不着頭腦,但我不明白的問題,在這裏開始在親戚Pubnub代碼文件:Pubnub.getMessageEventNameFor()不會觸發

文件1)其中事件觸發:

this.$rootScope.$on(this.Pubnub.getMessageEventNameFor("activity_" + this.activity.id + "_tables"), function (ngEvent, envelope) { 
     console.log("envelope", envelope); 
    }); 

文件2)(這是文件1)其中,事件觸發(只是改變了頻道名稱)的副本:

this.$rootScope.$on(this.Pubnub.getMessageEventNameFor("kitchen_" + this.activity.id + "_tables"), function (ngEvent, envelope) { 
       console.log("envelope", envelope); 
      }); 

文件3)觸發該事件:

this.Pubnub.publish({ 
      channel: "kitchen_" + sessionStorage.getItem('activity_id') + "_tables", 
      message: angular.toJson({ msg: "New Table", table: new_table}) 
     }, function (status, response) { 
     }); 

this.Pubnub.publish({ 
      channel: "activity_" + sessionStorage.getItem('activity_id') + "_tables", 
      message: angular.toJson({ msg: "New Table", table: new_table}) 
     }, function (status, response) { 
     }); 
  • activity.id這都是一樣的(測試)
  • 我做了的console.log(此$ rootScope)文件1和事件存在:

$$聽衆[「pubnub:默認:訂閱:回調:activity_SUyNTii1He_tables」] [「0」]

(如果我通過鼠標懸停可以看我的函數體,如果我點擊「顯示功能定義」需要我的功能,因此它具有功能)

  • 當我從文件3觸發事件......在文件1這裏只有一個控制檯打印行:

pubnub.4.3.3.js:1670 XHR完成加載:GET「http://ps1.pubnub.com/v2/subscribe/MY_KEY_AND_UUID&pnsdk=PubNub-JS-Web%2F4.3.3」。

如果我點擊打開一個新標籤的鏈接它告訴我包括我的所有數據從文件3通過正確的JSON結構:

{ 
"t": { 
    "t": "14970265478466724", 
    "r": 12 
}, 
"m": [ 
    { 
     "a": "0", 
     "f": 0, 
     "i": "...other-key...", 
     "p": { 
      "t": "14970265478474153", 
      "r": 12 
     }, 
     "k": "...subscribe-key...", 
     "c": "activity_SUyNTii1He_tables", 
     "d": "{ 
      ...all my data... 
     }", 
     "b": "activity_SUyNTii1He_tables" 
    } 
] 

}

我不「T有關於Pubnub很多知識,所以我不知道如果我錯過一些東西......

UPDATE 我已經解決了這個問題。在我的文件2的「頁面」中,有兩個標籤可以完成我的html頁面,每個標籤都是來自「組件」的文件,每個文件都有一個Pubnub初始化。在同一個「頁面」上有兩個初始化會產生這個問題,因此刪除一個(我已經刪除了文件2中的Pubnub初始化)將解決此問題。 也許這對未來這個問題是有用的。這是Angular中的邏輯錯誤,我沒有想到這兩個組件文件就像頁面文件中的一個文件一樣

回答

1

您是否註冊了該事件? 對於如:

Pubnub.subscribe({ 
    channel: $scope.channel, 
    triggerEvents: ['event1', 'event2', 'event3', '...'] 
}); 
+1

不,但我找到了一個解決方案,有一個問題Pubnub初始化(文件2有兩個項目連接,都有Pubnub的初始化,所以我已經取消了一個,現在一切正常) – Bogdan

0

運算的解決方案並沒有爲我工作,但我通過改變訂閱與所選通道的數組channel物業管理的問題。

例:

Pubnub.subscribe({ 
    channels: [ $scope.channel ], 
    triggerEvents: true 
}); 

https://github.com/pubnub/pubnub-angular#events

希望它可以幫助別人。