2016-11-10 6 views
1

私はVueインスタンスにAPI呼び出しによって変更された多くの変数を持ちます。初期値は重要ではありません。Vueインスタンスでデータエラーを破棄することはできますか?

私は道ない VMのインスタンス化時にそれらを定義することですが期待していたが、これは動作しません:

vm = new Vue({ 
 
    el: "#app", 
 
    data: {} 
 
}); 
 
vm.number = 3
<div id="app"> 
 
    {{ number }} 
 
</div>

私はdata: { number: null }data: {}を交換した場合コードは正常に動作します。

私が避けたいのは、このような宣言をほのめかすことです。は、インスタンス化時にdata変数を宣言しない方法がありますか?

+0

により、すべてのデータを参照:

だからあなたが行うことができます: {container:{number:null、...}} '?コンテキストを知っているので、 'container'のより良い名前を思いつくことができると確信しています。 – gskema

答えて

1

次のように

docsはVueの中にどのように反応作品を説明します。

を使用すると、そのデータとしてVueのインスタンスにJavaScriptのオブジェクト オプション平野を渡すと、Vueのは、そのプロパティのすべてをウォークスルーし、それらを変換します Object.definePropertyを使ってゲッタ/セッタに渡します。

...

ゲッター/セッターは、ユーザには見えないが、フードの下で、彼らは プロパティがアクセスまたは変更された場合に依存トラッキングおよび変更通知を行うためのVueを有効 。

...

により、現代のJavaScriptの制限(と Object.observeの放棄)に、Vueのは、プロパティの追加や削除を検出することはできません。

そこで、基本的平野に関しては、Vueのはaddionsまたは欠失を検出することはできませんので、あなたのAPI呼び出しが戻ると、プロパティがインスタンス化の時から存在していなければならないときに、データ値が更新されるので、反応性であることとするためで

つまり、プレースホルダーオブジェクトを使用してそのオブジェクトにプロパティを付けることで、@ gskemaで提案されているように偽装することができます。これらの変更はVueによって実際に取り上げられます。

data: { 
    api: null 
} 

をして、彼らが返されたときに、そのapiプロパティに、あなたのAPI値を添付し、そして最終的にどれだけのデータ `についてなどapi.number

+0

ありがとうございます。私はコンポーネントを使用しているので、 "コンテナ化された"変数のセットを持つソリューションは、変数の宣言を避ける方法がない場合でも、私がやったことです。あなたの答えは、これが不可能であることを非常に明確にしています。 – WoJ

関連する問題