Ember ArrayProxy的最佳做法

Ember的Em.ArrayProxyEm.Array有许多可用于通知观察者对content进行更改的程序化方法。 例如:

  • arrayContentDidChange
  • arrayContentWillChange
  • enumerableContentDidChange
  • enumerableContentWillChange
  • contentArrayWillChange
  • Em.ArrayProxy也有几种操作ArrayProxy内容的方法。 例如:

    this.pushObject('something random');
    // Or
    this.insertAt(2, 'something random');
    

    当使用后一种方法时,是否必须将它们与前一种方法结合使用? 似乎很愚蠢的是,Ember的通常自动化的财产观察员在这里需要手动踢球,但我没有找到非常清楚的文件。


    不,你不必一起使用任何方法。

    如果你想添加项目到你的ArrayProxy,只需pushObject() 。 您只需使用该方法就可以知道这一点,并发现它只是起作用。

    从文档:

    这个mixin实现了Observer友好的类似Array的行为。 它不是一个具体的实现,但是它可以被其他希望像数组一样出现的类使用。

    http://emberjs.com/api/classes/Ember.Array.html

    Ember.Array是其他编程语言(不带mixin)接收接口名称的类的一种类型。

    ArrayProxy包装任何实现Ember.Array的其他对象

    http://emberjs.com/api/classes/Ember.ArrayProxy.html

    Ember.ArrayProxy正是名称所说的代理,它包装了实现了Ember.Array接口的任何对象。

    您提到的其他方法可能会在您制作自己的Ember.Array的“子类”时实施/覆盖。 一些必须被实现来使你的子类ArrayProxy友好。 或者,如果您想添加自定义行为,可以在arrayContentDidChange时写入日志,然后覆盖该方法并添加应用程序需要的任何逻辑。

    这就是面向对象编程,所有这些解释都超出了任何框架文档的范围。


    你问是否pushObject等等触发这些事件?

    insertAt的文档:

    这将使用原始的replace()方法在指定的索引处插入一个对象。

    replace文档:

    你也应该调用this.enumerableContentDidChange()

    所以,是的,一个正确实施的ArrayProxy会在你添加或删除东西时触发这些事件。

    链接地址: http://www.djcxy.com/p/65815.html

    上一篇: Best practices with Ember ArrayProxy

    下一篇: Ember best way to manage css and js