【问题标题】:Ember.js Array observerEmber.js 数组观察者
【发布时间】:2015-11-16 09:53:05
【问题描述】:

我有以下观察者:

testArrayObserver: function(){
....

}.observes('testArray.@each'),

现在,只要对数组进行任何更改,可能会添加或删除元素,这个观察者就会命中。

我想问一下,当这个观察者命中时,我们能否知道原因,即天气向数组添加元素调用观察者或从数组中删除元素调用观察者。

【问题讨论】:

  • testArray.@each 在 2.0 中被删除,因为性能问题,并且因为它不是你通常想要的。支持的语法是 testArray.[] 用于插入|删除,testArray.@each.property
  • 我认为没有办法知道它是如何变化的,除非你缓存旧值并进行比较,触发的更改通知是通用的。
  • @Deepak Negi Sunny 您能谈谈您提出问题的动机吗?你实际上想要完成什么?它是您可以使用计算属性的东西,还是在代码中是否添加/删除更有意义的东西?

标签: ember.js


【解决方案1】:

我想问一下,当这个观察者命中时,我们能知道 原因,即天气将元素添加到数组调用了观察者或 从数组中移除一个元素会调用观察者。

不,我们不能。 Ember 没有任何可用于获取此信息的公共 API。但是,您可以创建自己的逻辑来跟踪数组的最后长度和该数组的当前长度。根据这两个数字的比较,您可以确定元素是否已添加或删除。

不推荐使用testArray.@each。你最好使用:

testArrayObserver: Ember.observer('testArray.[]', function() {
  // ...
}),

【讨论】:

    猜你喜欢
    • 2016-12-28
    • 2015-02-14
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    相关资源
    最近更新 更多