我使用Skygear作为BaaS。
我创建了一个聚合物元素<router-outlet name=secondaryInfo></router-outlet>
<router-outlet></router-outlet>
(就像<android.support.design.widget.BottomNavigationView
android:background="@color/colorPrimary"
app:itemBackground="@color/colorPrimary"
// .... />
一样)来初始化skygear实例。
skygear-app
我也可以通过
成功登录polymerfire
我可以通过 <skygear-app name="skygear" app={{skygear}} end-
point="https://xyz.skygeario.com/" api-key="SECRET"></skygear-app>
获得userId,但是,
我无法使用数据绑定 passwordSignIn: function(){
skygear.loginWithEmail(this.email, this.password).then(
function(){
console.log('login ok');
console.log(skygear.currentUser.id);
this.currentUser = skygear.currentUser;
}
);
来获取userId。
console.log(skygear.currentUser.id);
{{skygear.currentUser.id}}
等1级属性有效;
但是第2级属性如 <h4>Access Token: [[skygear.accessToken]]</h4> <!-- working -->
<h4>User Id: [[skygear.currentUser.id]]</h4> <!-- not working -->
并不是
数据绑定仅限于1级吗?还有什么想法要解决?
答案 0 :(得分:1)
根据polymer1.0 doc,第2级属性为Unobservable changes
,参考:https://www.polymer-project.org/1.0/docs/devguide/data-system#unobservable-changes
我们可以使用skygear容器提供的onUserChanged
来通知聚合物应用程序。
这是最小化的Polymer skygear-app
Polymer({
is: 'skygear-app',
apiKey: {
type: String
},
endPoint: {
type: String
},
app: {
type: Object,
notify: true,
computed: '__computeApp(name, apiKey, endPoint)'
}
},
__computeApp: function(name, apiKey, endPoint) {
if (apiKey && endPoint) {
skygear.onUserChanged(() => {
this.notifyPath('app.currentUser.id');
});
skygear.config({
apiKey: apiKey,
endPoint: endPoint
}).then(() => {
this.notifyPath('app.currentUser.id');
});
return skygear
} else {
return null;
}
return skygear
}
});