如何扩展 Ember.ArrayProxy?我尝试过以下方法:
Ember.ArrayProxy.reopenClass({
flatten: function(){
var r = [];
this.forEach(function(el) {
r.push.apply(r, Ember.isArray(el) ? el.flatten() : [el]);
});
return r;
}
});
但最终编写了以下解决方案:
// Source: https://gist.github.com/mehulkar/3232255
Array.prototype.flatten = Ember.ArrayProxy.prototype.flatten =function() {
var r = [];
this.forEach(function(el) {
r.push.apply(r, Ember.isArray(el) ? el.flatten() : [el]);
});
return r;
};
前面的例子中我遗漏了什么吗?我试图坚持 Ember 的方法,所以我不想使用后者。
最佳答案
如果您使用flatten
在 ArrayProxy
的实例上你想使用reopen
,而不是reopenClass
。 reopenClass
将方法添加到类本身,也就是说您可以调用 Em.ArrayProxy.flatten()
关于javascript - 扩展 Ember.ArrayProxy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21482425/