2013-04-04 157 views
2

我有一個Ember.js應用程序,我一直在開發,並且工作得很好。我現在正在嘗試將SIP over Websockets庫集成到名爲JsSIP的庫中。我的Ember應用程序和一個獨立的驗證性SIP應用程序都獨立工作,但是,只要我將兩者結合在一起,我就會在SIP庫中看到奇怪的錯誤。我終於縮小了事實,這是這兩個API之間的命名空間問題Ember.js命名空間問題

我已經看到至少有一個關於Ember.js和其他任何類型的DOM操作的庫之間的命名空間衝突的SO問題(例如JQuery Mobile)。據我所知,我使用的SIP庫對DOM的任何實際操作都做得很少。我看到了一些關於使用RequireJS的建議,雖然我真的不想模塊化我的客戶端,甚至不知道它是否會解決名稱空間衝突。將東西包裝在Ember.Namespace中會有幫助嗎?

我創建了一個超級簡單的JSFiddle,它演示了核心問題。任何關於如何解決這兩個庫之間的問題的建議都非常感謝。下面是其中包含在小提琴梗概代碼:

// JsSIP code 
try 
{ 
    var configuration = { 
     'uri':   "[email protected]", 
     'password': "password", 
     'trace_sip': true, 
     'ws_servers': "ws://example.com" 
}; 
    myPhone = new JsSIP.UA(configuration); 
    myPhone.start(); 
} 
catch(e) 
{ 
    console.log(e.message); 
} 

// Ember code 
window.App = Ember.Application.create(); 

回答

1

JsSIP.UA的構造轉化ws_servers到一個數組並遍歷它與for(element in array),其中在跳閘擴展由灰燼取得的數組原型。 JS。您可以禁用使用下面的代碼爲您的SIP庫工作開箱即用(包括灰燼腳本前加入):

window.Ember = {}; 
Ember.EXTEND_PROTOTYPES = false; 

這可能對你的灰燼應用有很大的影響,雖然。閱讀此文檔頁面以瞭解更多信息:http://emberjs.com/guides/configuring-ember/disabling-prototype-extensions/

+0

非常感謝您的快速響應!這非常合理。我知道這是兩家圖書館之間的衝突,只是在縮小確切問題方面遇到了困難。再次感謝!! :) – Jessica 2013-04-05 13:28:36