2016-06-08 92 views
2

以下示例取自聚合物飞镖documentation on behaviors。它利用toggleHighlight中的方法set。我不明白这是如何可能的,因为set没有在任何地方定义。如何在聚合物镖行为混合中设置属性?

@behavior 
abstract class HighlightBehavior { 
    @Property(notify: true, observer: 'highlightChanged') 
    bool isHighlighted = false; 

    static created(instance) { 
    print('Highlighting for $instance enabled!'); 
    } 

    @Listen('click') 
    toggleHighlight(_, __) { 
    set('isHighlighted', !isHighlighted); 
    }, 

    @reflectable 
    highlightChanged(bool newValue, _) { 
    toggleClass('highlighted', newValue); 
    } 
} 

如何在触发所有使数据绑定工作的功能的行为中设置聚合物属性?

一个行为是否应该执行PolymerBase以便能够使用set -method?快速测试显示set在行为执行PolymerBase时起作用。但这不是如何记录的。我可以通过实施PolymerBase来诱发一些不需要的副作用吗?

回答

0

HighlightBehavior是抽象的,所以真正的实例是通过继承获得的。从文档

class MyElement extends PolymerElement with HighlightBehavior { 
    MyElement.created() : super.created(); 
} 

PolymerElement延伸PolymerBase其供给set方法。

+0

谢谢,现在我明白了。 来自Java需要一些时间才能习惯这个功能。 –

+0

伟大的:-)行为是复杂的,行为的文件备件,所以不明显。在用一些代码绕过之后,事情变得更加清晰。其实我不需要编写自己的行为,开始一次,但所需的功能已经在polymer_elements库中。 –

+0

我正在为一个业务应用程序构建一个框架,我想用元素的行为来公开一个公共API。请参阅下面的示例,其中'view-companies'和'view-users'在ViewBehavior中混合,允许shell元素处理其子元素。 ''我认为这种分组通用功能的用例符合行为的思想。 –