【问题标题】:importing polymer behavior in polymerTS在polymerTS 中导入聚合物行为
【发布时间】:2015-09-16 03:12:46
【问题描述】:

所以我正在使用 PolymerTS 将 TypeScript 与我的聚合物 Web 应用程序一起使用,但我终其一生都无法弄清楚如何将现有的行为导入到我的组件中。

例如,如果我想在普通聚合物组件中的组件中使用 IronControlState,我会:

<link rel="import" href="../bower_components/iron-behaviors/iron-control-state.html">

<template code>

Polymer({
 is: 'example-component',
 properties: {
   name: {stype: String},
   value: {type: String},
   valueShort: {
 },
 behaviors: [
   Polymer.IronControlState,
           ],

PolymerTS 的文档说我应该只使用装饰器 @behavior 向我的组件添加行为。如果行为是在我的 ts 代码中导入的一些 TypeScript 代码中定义的,这很好。但是对于 Polymer 内置的行为,我迷路了。

如果我只是尝试:

declare var Polymer: {IronControlState: {focused: boolean} };

@component('example-component')
@behavior(Polymer.IronControlState)
export class ExampleComponent extends polymer.Base {

在我的 HTML 中使用相同的导入,我在浏览器的控制台中收到以下错误:

[example-component::_flattenBehaviorsList]: behavior is null, check for missing or 404 import

这表明它没有找到我要求的行为......

但是,Polymer.IronControlState 肯定会被加载。从 .ts 我可以添加:

ready() {
  console.log(Polymer.IronControlState);
}

它输出:Object {properties: Object,observers: Array[1]}

但如果我尝试记录 this.focused,它会输出“未定义”。

帮助!谢谢!

【问题讨论】:

  • 我应该添加模板代码并且 html 导入从 javascript 到 typescript 没有改变。我刚刚删除了 js 并添加了一个 .ts 文件。 .ts 文件编译并正常工作,但行为除外。

标签: typescript polymer web-component


【解决方案1】:

所以事实证明,只有 TypeScript 类才支持添加行为。最新版本添加了一个修复程序以支持泛型函数的行为:

https://github.com/nippur72/PolymerTS/issues/56

【讨论】:

    【解决方案2】:

    这表明它没有找到我要求的行为......

    的确如此。您仍然需要将&lt;link rel="import" href="../bower_components/iron-behaviors/iron-control-state.html"&gt; 放入您的模板中。

    【讨论】:

    • 它仍在我的模板中。
    猜你喜欢
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多