2013-03-27 36 views
1

在我的Ember应用程序中,我需要操纵(排序,过滤等)吨的非UI相关的对象。由于它们有很多,并且它们嵌套很深,所以我不会将它们声明为Ember对象,而是将其声明为“纯”的Javascript对象(数组和{})。我不需要所有的Ember mixins。EmberJS:如何防止Ember干扰jQuery.extend?

我的应用程序开始变慢。展望细节,这里是我发现:

在某些时候,我做了一个简单:

var b = $.extend(true, [], a); // a is a pure javascript object 

但是当我检查B,它看起来像它已经变成了灰烬对象。它有一堆属性,如addArrayObserver,addBeforeObserver等。

如何防止这种情况发生?

感谢

PJ

回答

0

灰烬自动扩展了默认的Javascript数组添加功能,即使你创建一个“纯粹”的Javascript阵列[]让你获得这些新增。

您可以通过加载Ember.js之前设置一个配置标志禁用这些扩展:

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

这是one of the guide pages详细。

+0

非常感谢,我错过了这个。但它很“沉重”,这意味着我将不得不重写大量的代码。你有机会知道是否有方法创建一个没有Ember扩展的数组的特定实例?我的意思是,如果你做了'Ember.EXTEND_PROTOTYPES = false;'那么你可以用Ember.A(...)创建一个Ember数组,但有没有一种方法可以让它在相反的情况下工作(EXTEND_PROTOTYPES被设置为true) ? – PJC 2013-03-27 17:10:33

+0

看起来好像是一个全或全无,你不能挑选,至少据我所见。 – CraigTeegarden 2013-03-28 14:05:51