Javascript 聚合物重熔物观察

Javascript 聚合物重熔物观察,javascript,redux,polymer,polymer-2.x,Javascript,Redux,Polymer,Polymer 2.x,因此,我将redux与polymer 2.0一起使用,它工作得非常好。然后我突然遇到了一个问题,我一辈子都找不到我应该做什么 settings:{ type:Object, statePath: 'setting.documentSettings', observer:'_extendedInfo' } 然后在我的行动中 return Object.assign({}, state

因此,我将redux与polymer 2.0一起使用,它工作得非常好。然后我突然遇到了一个问题,我一辈子都找不到我应该做什么

  settings:{
              type:Object,
              statePath: 'setting.documentSettings',
              observer:'_extendedInfo'
          }

然后在我的行动中

  return Object.assign({}, state, {
                                documentSettings: setting
                             });  
此外,我还有多个合并的还原器,这就是为什么我的属性中有它的setting.documentSettings

所以我改变了对象文档设置,属性设置也改变了,这很好。但是,观察者从未被击中,我在任何地方都找不到这样的例子。

我认为,他的评论解释了为什么观察者没有开火

暂且不考虑Redux,以下聚合物属性代码将在路径
设置
上创建一个观察者:

settings: {
  type:Object,
  observer:'_extendedInfo'
}
观察路径
设置
将更改顶级属性
设置
,但不会更改其子属性,因为Polymer实现观察者的方式不同

如果我正确理解了您的代码(不一定是这样),我认为您实际上需要一个关于
设置的复杂观察者。*
,因为您也需要观察对任何子路径的任何更改:
设置。文档设置
设置。搜索设置
,等等

要创建这样一个复杂的观察者,它应该是

static get observers() {
  return [
    // Observer method name, followed by a list of dependencies, in parenthesis
    '_extendedInfo(settings.*)'
  ];
}
请注意,对于观察通配符路径(如
设置。*
),可以在
观察者
数组(请参见)中声明观察者,而不是在属性本身的声明中声明

另见


希望这会有帮助,我没有完全误解你在做什么。。。祝您好运

看起来您是在订阅“
设置
”对象中位于“
文档设置
”键下的某个内容,但在您的重复操作中,您是在“直接”覆盖存储顶层名为“
文档设置
”的键,而不是在“
设置
”下对象。这是因为我有多个减缩器@这解决了一半的问题。它击中了观察者,但我从redux返回值的方式不正确,并且它没有接收到值。
static get observers() {
  return [
    // Observer method name, followed by a list of dependencies, in parenthesis
    '_extendedInfo(settings.*)'
  ];
}