2017-09-07 1 views
-1

のは、私は次のようなデータを持っているとしましょう:Vueを使用してネストされたデータを持つコンポーネントにオブジェクトを送信する最適な方法は何ですか?

data: function() { 
    return { 
     a: "hello", 
     b: { 
      title: this.a + " BOB" 
     } 
    } 
} 

私はコンポーネントでこれを渡すと、this.aは未定義です。

<component :pass-data="b"></component> 

どのようにネストされたプロパティを送信しますか?

答えて

1

あなたが計算されたプロパティ

data: function() { 
    return { 
     a: "hello", 
     b: " BOB" 
    }, 
    computed:{ 
    bComputed: function(){ 
     return this.a + this.b; 
    } 
} 
} 

を使用して

<component :pass-data="bComputed"></component>

PSを渡すことができます:あなたの "BOB" ​​の背後にある;コンパイラの問題ではなかったですか?

2

data関数が呼び出されると、this.aundefinedので、bデータプロパティが"undefined BOB"として初期化されています。そのプロパティを子コンポーネントに正しく送信しています。

あなたはb計算されたプロパティにする必要があり、次のいずれか

computed: { 
    b() { 
    return { title: this.a + ' BOB' }; 
    } 
} 

それともdata方法が発射された後b.titleの値を設定します。@Roy Jが述べたように

data() { 
    return { 
    a: "hello", 
    b: { 
     title: '' 
    } 
    } 
}, 
created() { 
    this.b.title = this.a + " BOB"; 
} 

かを、あなたができますデータオブジェクトを作成してから、dataメソッドに戻る前に:

data() { 
    let a = "hello"; 

    return { 
    a: a, 
    b: { 
     title: a + " BOB" 
    } 
    } 
} 
+0

'data'は関数なので、' created'ではなくオブジェクトをアセンブルすることができます。オブジェクトリテラルを返す単一のステートメントである必要はありません。 –

+0

@RoyJ良い提案。 OPの例は単純化されているように見えるので、彼らの実際の状況が何であるかわからない/なぜ彼らが 'this.a'を参照する必要があるのか​​わからない – thanksd

関連する問題