2016-06-08 86 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元素處理其子元素。 ''我認爲這種分組通用功能的用例符合行爲的思想。 –