Polymer 聚合物1.0+;通知真的不工作

Polymer 聚合物1.0+;通知真的不工作,polymer,polymer-1.0,Polymer,Polymer 1.0,我不确定我的代码中发生了什么,可以使用一些指针来指示可能发生的事情 有点背景 当“pizza”中的任何内容发生更改时,我想让“pizza”将其更改传递给“selectedItem” 现在来看看代码: 以下是我的子元素js: Polymer({ is:"order-pizza-mod", behaviors: [ Polymer.NeonSharedElementAnimatableBehavior ], properties: { mobile: {

我不确定我的代码中发生了什么,可以使用一些指针来指示可能发生的事情

有点背景

当“pizza”中的任何内容发生更改时,我想让“pizza”将其更改传递给“selectedItem”

现在来看看代码:

以下是我的子元素js:

Polymer({
  is:"order-pizza-mod",
  behaviors: [
    Polymer.NeonSharedElementAnimatableBehavior
  ],
  properties: {
    mobile: {
      observer: "screenSizeChanged"
    },
    pizza: {
      notify: true,
      observer: "selectedPizza"
    },
....
  addToOrder: function () {  //this is the function that will need to update my parent element.
    this.set("pizza.ADD",true);
    this.fire('selectPage',4);
    console.log("SENT CHANGES");
    console.log(this.pizza);
  },
....
以下是我的父元素HTML和JS:

HTML:


关于可能发生的事情有什么想法吗?

所以我找到了一个解决方案,但不是很好

问题在于:

this.set("pizza.ADD",true);
目前聚合物存在一个未解决的问题,即“this.set”功能不会触发notify。我还尝试了“notifyPath”,但没有成功。我发现迫使polymer触发notify的唯一方法是将变量重新分配给一个新对象,如下所示:

addToOrder: function () {  //this is the function that will need to update my parent element.
    this.pizza = {'ADD': true,
                  'CODE':this.pizza.CODE,
                  'GARNISHES':this.pizza.GARNISHES};

    this.fire('selectPage',4);
    console.log("SENT CHANGES");
    console.log(this.pizza);
},

这很混乱,但可以强制polymer通知数据绑定变量。现在,如果有人知道更好的方法,请告诉我。

所以我找到了一个解决方案,但不是很好

问题在于:

this.set("pizza.ADD",true);
目前聚合物存在一个未解决的问题,即“this.set”功能不会触发notify。我还尝试了“notifyPath”,但没有成功。我发现迫使polymer触发notify的唯一方法是将变量重新分配给一个新对象,如下所示:

addToOrder: function () {  //this is the function that will need to update my parent element.
    this.pizza = {'ADD': true,
                  'CODE':this.pizza.CODE,
                  'GARNISHES':this.pizza.GARNISHES};

    this.fire('selectPage',4);
    console.log("SENT CHANGES");
    console.log(this.pizza);
},
这很混乱,但可以强制polymer通知数据绑定变量。现在,如果有人知道更好的方法,请告诉我。

而不是这个

properties: {
  selectedItem: {
    observer:"selectionChanged"
  }
}
这样做

observers: [
  'selectionChanged(selectedItem.*)'
]
问题是
selectedItem
仅在引用全新对象时才被视为已更改。但您正在尝试观察
selectedItem
属性的更改,这要求您观察
selectedItem.*

而不是此属性

properties: {
  selectedItem: {
    observer:"selectionChanged"
  }
}
这样做

observers: [
  'selectionChanged(selectedItem.*)'
]

问题是
selectedItem
仅在引用全新对象时才被视为已更改。但是您正在尝试观察
selectedItem
属性的更改,这要求您观察
selectedItem.*

预期的行为是什么?当前行为是什么?当我在子元素的“pizza”中更改某些内容时,我希望控制台日志会显示“耶,得到了所有的东西!”预期行为是什么?当前行为是什么?我希望控制台日志会显示“耶,得到了所有的东西!”!当我在子元素的“pizza”中更改某些内容时。很有趣。这是一个很好的观点,我没有想到这一点。谢谢有趣。这是一个很好的观点,我没有想到这一点。谢谢