动态更改on-tap属性

时间:2014-10-03 16:17:25

标签: javascript polymer

我要做的是更改基于spa路线的点击呼叫功能。这是我尝试过的(在自定义元素中工作)

this.$.menuButton.attr['on-tap'] = "{{newFunction}}";

this.$.menuButton.on-tap = "{{newFunction}}";

以及许多其他尝试都没有奏效。如何更改名称中包含 - 的属性的值?如果这不可行,那么动态更改on-tap功能的推荐方法是什么?

2 个答案:

答案 0 :(得分:3)

如果你想使用声明性路由,你仍然可以使用on-*处理程序和数据绑定来翻转处理程序:

<p on-tap="{{handler}}">Tap me to see what handler is set.</p>
<button on-click="{{setHandler}}" data-handler="oneHandler">Set Handler 1</button>

ready: function() {
  this.setHandler();
},
setHandler: function(e, detail, sender) {
  this.handler = !sender ? this.defaultHandler :  
                           this[sender.dataset.handler];
},
defaultHandler: function() {
  alert('default handler');
},
oneHandler: function() {
   alert('one handler');
}

http://jsbin.com/forame/1/edit

答案 1 :(得分:2)

您应该使用事件侦听器,而不是on- *声明性事件映射。

this.addEventListener('tap', this.myFunction);
this.addEventListener('tap', this.newFunction);

这基本上是一回事。但是,如果您需要(event, detail, sender)个参数,则必须自己传递它们。

API Reference