Polymer属性已更改功能

时间:2014-05-22 15:21:30

标签: polymer web-component

我有一个使用货币和价格属性定义的元素。当我将货币属性设置为英镑时,我想相应地计算价格。我尝试挂钩attrChanged方法,但if条件永远不会记录为真

currencyChanged: function (attrName, oldVal, newVal) {

    var actualPrice = this.getAttribute("usdprice");
    actualPrice = parseInt(actualPrice);

    var converter = 1;

    if(newVal === "£") {
      converter = 0.59;
      console.log("true");
    }

    this.$.price.innerHTML = actualPrice*converter;
  }

我使用以下命令更改货币

var a = document.querySelector("gmselect-element"); 
a.setAttribute("currency", "£");

1 个答案:

答案 0 :(得分:2)

当您使用published property *Changed watchers之类的currencyChanged时,参数为(oldVal,newVal)。只有当您创建了一个通用的attributeChanged lifecycle method时,才能获得它(attrName,oldVal,newVal)。试试这个:

currencyChanged: function (oldVal, newVal) {

    var actualPrice = this.getAttribute("usdprice");
    actualPrice = parseInt(actualPrice);

    var converter = 1;

    if(newVal === "£") {
      converter = 0.59;
      console.log("true");
    }

    this.$.price.innerHTML = actualPrice*converter;
  }

this simplified jsbin上打开Dev Tools控制台,看它是否有效。