我尝试根据PolymerTS docs创建并使用自己的行为,但抛出Uncaught ReferenceError
(ListViewBehavior
未定义)。
这是我的行为(list-view/list-view-behavior.ts
):
class ListViewBehavior extends polymer.Base {
...
这就是我使用它的方式(asset-list.ts
):
/// <reference path="list-view/list-view-behavior.ts"/>
@component('asset-list')
@behavior(ListViewBehavior)
class AssetList extends polymer.Base implements {
...
如果我在同一个文件(asset-list.ts
)中添加行为,则可以正常工作。
答案 0 :(得分:1)
我刚试过你的代码。有趣的是,定义ListViewBehavior
类而不导出它允许构建成功而不会发出警告或错误。当我尝试创建使用该行为的组件时,ReferenceError
在运行时发生。
修复是将此导入添加到我的组件的类文件中:
import 'list-view/list-view-behavior';
在发生这种情况时会导致编译错误的清理程序修复是导出行为的类:
// In list-view/list-view-behavior.ts ...
export class ListViewBehavior extends polymer.Base {...}
并将其导入组件文件中:
// In asset-list.ts ...
import {ListViewBehavior} from 'list-view/list-view-behavior';
答案 1 :(得分:1)
为了完整起见,这里最终对我有用。 (当我有时间时,我会尝试polymer-typescript-starter-kit
,因为我的解决方案不是很好。)
首先,我必须创建一个模块:
module CMSBehaviors {
export class ListViewBehavior extends polymer.Base {
...
}
}
然后,我可以直接使用它:
@behavior(CMSBehaviors.ListViewBehavior)
在elements.html
中,我添加了以下内容:
<script src="../bower_components/polymer-ts/polymer-ts.min.js"></script>
<script src="../services/cms-behaviors.js"></script>
需要polymer-ts.min.js
,因为行为来自polymer.Base
。