javascript - 扩展 Ember.ArrayProxy

标签 javascript ember.js

如何扩展 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 的方法,所以我不想使用后者。

最佳答案

如果您使用flattenArrayProxy 的实例上你想使用reopen ,而不是reopenClassreopenClass将方法添加到类本身,也就是说您可以调用 Em.ArrayProxy.flatten()

http://emberjs.jsbin.com/OqUFObeg/1/edit

关于javascript - 扩展 Ember.ArrayProxy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21482425/

相关文章:

ember.js - 查询参数是否有效?

Ember.js:直接加载相关模型

javascript - 为什么 selectedIndex 在此代码中不起作用?

javascript - Angular JS : Unordered List Elements not getting displayed

javascript - 删除或应用默认对象作为值

javascript - 在 Ember 中按照不同模型的属性进行排序

javascript - 如何处理鼠标中键单击?

javascript - 通过过滤未定义计算对象数组的平均值

javascript - 如何使用 jQuery 在 div 中多次拖放图像以及在 dropped div 中拖放图像?

ember.js - 刷新 Ember.CollectionView 的 contentBinding 重新排序