1

我使用 Skygear 作为 BaaS。我创建了一个聚合物元素skygear-app(就像polymerfire做的那样)来初始化 skygear 实例。

  <skygear-app name="skygear" app={{skygear}} end-
  point="https://xyz.skygeario.com/" api-key="SECRET"></skygear-app>

我也可以通过以下方式成功登录

  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);但是,我无法使用 data-binding 获取 userId {{skygear.currentUser.id}}

  <h4>Access Token: [[skygear.accessToken]]</h4> <!-- working -->
  <h4>User Id: [[skygear.currentUser.id]]</h4> <!-- not working -->

1级属性喜欢{{skygear.endpoint}}作品;但 2 级属性就像{{skygear.currentUser.id}}不一样。

数据绑定是否仅限于 1 级?有什么想法可以解决吗?

4

1 回答 1

1

根据polymer1.0 doc,2级属性是Unobservable changes,参考:https ://www.polymer-project.org/1.0/docs/devguide/data-system#unobservable-changes

我们可以使用onUserChangedskygear 容器提供的通知聚合物应用程序。

这是最小的 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
    }
  });
于 2017-04-19T07:48:34.927 回答