我有一個類似的情況,我有一個可觀察的對象在根聚合物元素,我分配給子聚合物元素的屬性。
子聚合物元素可以綁定到這個屬性。
AppModel(全球模型)
class AppModel extends Object with Observable {
@observable bool isLoggedIn = false;
@observable List<String> authenticationProvider = ['Google', 'Yahoo', 'GitHub', 'Amazon'];
}
@CustomTag("app-element")
class AppElement extends PolymerElement {
@observable AppModel appModel;
AppElement.created() : super.created() {
}
}
AppElement(HTML)這裏的全球模型中獲取的分配給子元素
<polymer-element name="app-element">
<template>
<my-login id="mylogin" model="{{appModel}}"></my-login>
</template>
...
</polymer-element>
MyLogin(DART)模型屬性被分配給模型字段。
@CustomTag("my-login")
class MyLogin extends PolymerElement {
MyLogin.created() : super.created();
@published AppModel model;
}
MyLogin(HTML)全球模型來顯示/隱藏登錄按鈕/登錄的用戶信息
<polymer-element name="bwu-login">
<template>
<template if="{{!model.isLoggedIn}}">
<bs-dropdown>
<div class="dropdown">
<div class="dropdown-toggle btn btn-default btn-xs navbar-btn" role="button" data-toggle="dropdown">
<span class="glyphicon glyphicon-log-in"></span> Login
</div>
<ul class="dropdown-menu" role="menu" aria-labelledby="select authentication provider">
<template repeat="{{ap in model.authenticationProvider}}">
<li role="presentation">
<a role="menuitem" tabindex="-1" href="{{ap.authenticationUrl}}" on-click="{{openLogin}}" target="_blank">{{ap.name}}</a>
</li>
</template>
</ul>
</div>
</bs-dropdown>
</template>
<template if="{{model.isLoggedIn}}">
<small>{{model.name}}<template if="{{model.isAdmin}}"> (Admin)</template></small>
<div id="logoutButton" on-click="{{onLogoutHandler}}" class="btn btn-default btn-xs navbar-btn" role="button">
<span class="glyphicon glyphicon-log-out"></span> Logout
</div>
<!--<div><img src="{{model.avatar}}"></img>{{model.name}} <button id="logout">Log out</button></div>-->
</template>
</template>
<script type="application/dart" src='my_login.dart'></script>
</polymer-element>
如果MyVar的在兩個地方指的是同一個實例,它是適當的可觀察的,這將工作。 –