【问题标题】:Polymer function call with parameters带参数的聚合物函数调用
【发布时间】:2015-01-23 07:17:22
【问题描述】:

这似乎是一个非常简单的,但不知何故我不知道该怎么做。 我想通过“core-collapse-open”事件将数据发送到 Polymer 组件,但这不起作用:

<core-collapse on-core-collapse-open="{{loadDetails(data)}}">
{{data.Title}}
...

当我使用上面的代码时,聚合物中的loadDetails 函数没有命中。

Polymer('custom-item', {
        data: {},
        ready: function () {
        },   
        loadDetails: function (e, details, sender) {
            debugger;
        }
    });

如果我不使用声明性语法中的函数语法(如下所示),则 loadDetails 函数会命中。

<core-collapse on-core-collapse-open="{{loadDetails}}">
{{data.Title}}
...

如何在事件中发送参数。

【问题讨论】:

  • 这看起来与 Dart 无关。你添加dart-polymer标签有什么原因吗?
  • 我不确定这是否与 Dart 有关。我现在将其删除。
  • Polymer 1.x 的实现方式:stackoverflow.com/questions/28210278/…

标签: polymer


【解决方案1】:
on-core-collapse-open="{{loadDetails(data)}}"

这意味着:执行loadDetails(data) 并且无论它的返回值是什么都将被绑定为事件处理程序。不是你想要的。

另外,事件处理函数已经接收参数:事件对象。你不能给它传递额外的参数。如果你要传递的data指的是你的this.data属性:loadDetails函数已经以this.data的形式访问它,所以你不需要传递它。

如果您尝试对两个不同的事件使用相同的处理函数并为每个单独的事件传递额外的参数:传统上您会使用匿名函数包装器来执行此操作,而使用声明性语法根本不可能。

【讨论】:

  • 数据不是this.data。所以,我真的需要额外的参数。让我想想是否有任何解决方法。
【解决方案2】:

您可以将data 绑定到core-collapse 的属性,然后使用事件处理程序的target 参数或event 参数的target 属性访问数据,或者如果data 是无论如何,元素的模型只需访问TemplateInstance(参见https://stackoverflow.com/a/24530099/217408的完整示例)

【讨论】:

    【解决方案3】:

    我从另一个帖子中得到了答案。即使我发布了不同的上下文,我知道我可以使用相同的。感谢 Gunter 对该主题的回复。

    Polymer event parameters on repeat

    【讨论】:

      猜你喜欢
      • 2015-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多