2017-08-08 17 views
1

変更します。また、私は、このオブジェクトのための時計を持っている、と私はそれに応じて別のオブジェクトを更新しています...コンポーネントの小道具は、私はこのようになります多次元のオブジェクトを持って

new Vue({ 
    el: '#app', 
    data: { 
    obj: {}, 
    newObj: {} 
    }, 

    watch: { 
    obj: { 
     handler(obj) { 

    } 
    } 
    } 
}) 

私は小道具としてNEWOBJを使用していますが、forループを実行するコンポーネントに渡します。

ハンドラの内部で、オブジェクトの第1レベルのキーを変更すると、コンポーネントはDOMを更新します。

handler(obj) { 
    this.$set(this.newObj, key, { 
     [innerKey]: [ [] ] 
    }); 
} 

ただし、セカンダリレベルのキーを変更しようとすると、コンポーネントはDOMを更新しません。

handler(obj) { 
    var key = 1; 
    var additions = ['a', 'b', 'c'] 

    // First try: 
    var scafold = this.newObj[key] 
    scafold[additions[i]] = [ [] ]; 
    this.newObj[key] = scafold; 

    // Second try: 
    this.$set(this.newObj[key], additions[i], [ [] ]); 
} 

私はVUEデバッガを確認した場合、それは両方の方法を使用して欲しかったように、オブジェクトが更新さを示し、が、DOMは変更されません。

私が言ったように、それは内部の鍵を見ずそれに応答しないと信じています。この問題を克服する正しい方法は何ですか?

答えて

0

this.$setの後にthis.$forceUpdate();を試しましたか?

+0

私はしませんでした。私は今すぐ解決策を見つけました。最初に私は 'this.newObj [key]'を削除してから 'this。$ set(this.transferForms、key、scalfold)'を実行しました。 – senty

+0

'' 'delete this.newObj [key]' ' 'それはパフォーマンスの低下を知っているからです。 '' 'this。$ forceUpdate()' ''はあなたの問題に対処するために特別に作成されたもので、試してみることもできます。 – Simon

+0

私はこれを試しました。$ forceUpdate here:https://jsfiddle.net/Lp9nmxn9/15/、コンポーネントケースでは動作しませんでした – senty

関連する問題