Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Data binding 与子对象的数据绑定';聚合物中的子元素_Data Binding_Polymer_Polymer 1.0_Skygear - Fatal编程技术网

Data binding 与子对象的数据绑定';聚合物中的子元素

Data binding 与子对象的数据绑定';聚合物中的子元素,data-binding,polymer,polymer-1.0,skygear,Data Binding,Polymer,Polymer 1.0,Skygear,我正在使用Skygear作为BaaS。 我创建了一个聚合元素skygear应用程序(就像polymerfiredo)来初始化skygear实例 <skygear-app name="skygear" app={{skygear}} end- point="https://xyz.skygeario.com/" api-key="SECRET"></skygear-app> 我可以通过console.log(skygear.currentUser.id)获取数据,

我正在使用Skygear作为BaaS。 我创建了一个聚合元素
skygear应用程序
(就像
polymerfire
do)来初始化skygear实例

  <skygear-app name="skygear" app={{skygear}} end-
  point="https://xyz.skygeario.com/" api-key="SECRET"></skygear-app>
我可以通过
console.log(skygear.currentUser.id)获取数据,但是,
我无法使用数据绑定
{{skygear.currentUser.id}
获取用户id

  <h4>Access Token: [[skygear.accessToken]]</h4> <!-- working -->
  <h4>User Id: [[skygear.currentUser.id]]</h4> <!-- not working -->
访问令牌:[[skygear.accessToken]]
用户Id:[[skygear.currentUser.Id]]
{{skygear.endpoint}}
这样的1级属性起作用; 但是像
{{skygear.currentUser.id}}
这样的二级属性就不需要了


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

根据polymer1.0文档,2级属性是
不可观察的更改
,参考:

我们可以使用skygear container提供的
onUserChanged
通知polymer app

这是skygear应用程序的最小工作时间

  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
    }
  });

内的匿名函数中的
this
。then()
不是正确的
this
。我们不必在配置之后通知。他们应该是独立的。我认为应该有两条路径。首先是onUserChanged(),它在用户登录、注销或更改电子邮件时更新值。第二个是config()/init(),它获取当前登录用户。(虽然
的范围不是代码中预期的范围)
  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
    }
  });