2013-04-04 156 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