【发布时间】:2016-02-18 06:38:21
【问题描述】:
我想在 Dart 中编写一个简单的行为以供自定义元素使用。
@behavior
abstract class AlignmentBehavior implements PolymerBase {
@Property()
bool alignTop = false;
// more properties ...
ready() {
updateAlignment();
}
@reflectable
updateAlignment([_,__]) {
// reference to the element the Behavior is attached to.
// 1) Is that the correct way?
var ele = Polymer.dom(root);
// We need to inherit from PolymerBase to access set(...)
// 2) Is that the correct way?
set('alignTop', aTop);
// .. to more stuff
}
}
我的前两个问题已经写在代码中了。如何访问行为附加到的元素?这样做的正确方法是什么?我目前使用Polymer.dom(root),但我不知道这是否有效,因为我有一些运行时错误,我将在本文后面解释。访问底层元素的官方方式是什么?是使用 JsObject 吗?它是从父 PolymerElement 调用 Behavior 函数并传递this,还是根本不访问它?
另一个问题是我是否必须从 PolymerBase 继承。 Github wiki 上的 Behavior 示例没有这样做,但是为了访问诸如 set 之类的方法来修改 @Property 我必须从它继承。这样做的正确方法是什么?
我的最后两个问题是关于我得到的错误。一个错误要求我为我的属性实现 getter 和 setter,例如为 alignTop 添加 getter 和 setter。
最后但并非最不重要的一点是,我不能从我的自定义元素中调用updateAlignment()。它说Class 'MainApp' has no instance method 'updateAlignment'.
【问题讨论】:
-
最后一个问题:可以加
MainApp的代码吗?
标签: dart polymer polymer-1.0 dart-polymer