0

そのため、Polymer 1.0 の配列が期待どおりに渡されないという問題が発生しています。現在、アプリの別の部分に渡す必要がある usersInOrg 配列があります。ネストされた関数内から追加されたオブジェクトで配列を変更しようとするまで、自動データバインディングシステムは魅力のように機能します。

財産:

    usersInOrg: {
      type: Array,
      notify: true
    },

関数:

  _computeUsersInOrg: function(){
    /************* userIdsObjectInOrg ***********
    {
      uid: true
      uid2: true
      uid3: true
      ...
    }
    ********************************************/
    var userIds = Object.keys(this.userIdsObjectInOrg);
    // Empty old users (just in case)
    this.usersInOrg = [];
    // So I can use this.notifyPath or this.usersInOrg in the firebase call
    var self = this;
    for (var key in userIds) {
      // Where the user is found in the database
      var userRef = this.baseRef + '/users/' + userIds[key];
      // Create query
      var firebaseRef = new Firebase(userRef);
      // Here is where I should be adding my people into the array
      firebaseRef.on("value", function(snapshot) {
        // This comes back fine { name: Jill, age: 23, ... }
        console.log(snapshot) 

        // For debugging purposes (number are appearing correctly)
        self.notifyPath('usersInOrg', [5,6]);
        // Add in the user info to the array
        self.push('usersInOrg', snapshot.val());
        // Let index know I added it
        self.notifyPath('usersInOrg', self.usersInOrg);
      })
    }
  }

出力:

Users in Org: 5,6
Hello from shokka-admin-homepage

オブジェクトが配列に追加されないのはなぜですか? 5,6,[Object object]それは私が思うだろう出力する必要があります。

4

1 に答える 1

1

この質問を入力していると、答えが見つかりました。リストがどのように見えるかを掘り下げると、自分が持っているものをよりよく見ることができます. ループしてデータを表示しようとすると、リストは次のようになります。私の質問からコードを変更しませんでした。

新しい出力:

User: 5
First Name:
User: 6
First Name:
User: [object Object]
First Name: Jill

Users in Org: 5,6
Hello from shokka-admin-homepage

話の教訓: 配列は、オブジェクトが自分自身を文字列化するのと同じ方法でオブジェクトを文字列化しない。オブジェクトが配列内にある場合、単純にそれをスキップして先に進みます。コンソール ログはあなたの味方です。

コンソール ログ出力:

[5, 6, Object, splices: Object]
于 2016-02-23T19:29:14.307 に答える