首页 > 解决方案 > 函数属性不是 Polymer 中的函数

问题描述

我正在为我的项目使用 Polymer 框架,其中我在属性中声明一个函数回调并尝试从另一个函数调用它。但是在访问它时出现错误:

未捕获的 TypeError:this.callback 不是函数

请看看这个。

Polymer({
  is: "parent-dom",
  properties: {
    people: {
      type: String,
      value: "df"
    },
    item: {
      type: String,
      value: "asdf",
      notify: true
    },
    callback: {
      type: Object,
      value: function(index) {
        console.log("Inside  callback function");
      }
    },

  },
  showTargetColorDialog: function(e) {
    this.callback("sadf");
  }
});

标签: javascripthtmlpolymer

解决方案


您能否提供有关您想要实现的目标的更多详细信息,因为将Polymer 属性指定为函数不是很常见的情况?

因此,您可以在元素上声明公共方法,就像您对 所做的那样showTargetColorDialog,并且可以像这样访问它们:

document.querySelector('parent-dom').showTargetColorDialog();

但同样,这不是很“聚合方式”。

要回答您最初的问题,如果您真的需要将回调设置为 Polymer 属性(我仍然不确定为什么),但您可以:

callback: {
  type: Object,
  value: function() {
    return function(index) {
        console.log("Inside callback function ", index);
    };
  }
},

然后你就可以打电话了this.callback('something');


推荐阅读