2016-12-02 47 views
5

Basit bir Vue örneğim var ve jsonu HTTP isteği olmadan arka plandan vue geçmek istiyorum çünkü her zaman aynıdır. DOM yılındaVeriler (json) vue örneğine geçirme

Ben sahne ile bunu denedim ama çalışmıyor ... <div id="my-component" prices="[object Object]"> Vue ayıklama aracı boş bir dize olarak bana resim göstermek ve konsolda gibi görünüyor oluyor undefined

<div id="my-component" :prices="{{ $prices }}"> 
</div> 

<script> 
     new Vue({ 
      el: '#my-component', 
      props: ['prices'], 
      mounted: function() { 
       console.log(this.image); 
      }, 
     }); 
</script> 

Burada $prices json kodlu dizi.

cevap

8

Çözümün neredeyse yoktu ama yerine bir veri niteliği kullanabilir ve üzeri JSON atamak, bir aksesuar gerekmez Metod:

new Vue({ 
 
    el: '#app', 
 
    data: { 
 
     json: {}, 
 
    }, 
 
    methods: { 
 
    \t setJson (payload) { 
 
     \t this.json = payload 
 
     }, 
 
    } 
 
})
<script src="https://unpkg.com/vue/dist/vue.js"></script> 
 
<div id="app" :json="setJson({ foo: 'bar' })"> 
 
    <pre>{{ json }}</pre> 
 
</div>

sadece setJson yöntemleri yük için laravel verilerini atamak istiyorum, yani

:json="setJson({{ $prices }}) 
+0

parlak, aradığım şey bu! – xAoc

3

Bunun için herhangi bir Laravel yardımcı olup olmadığını bilmiyorum ama genel bir yaklaşım sunacağım.

JSON verilerini global bir değişkende depolamak ve sayfa yüklenip js dosyalarınızda kullanmak bir seçenek olacaktır. Vue bileşeni başlatılırken zaman myApp.userData değişkeni erişmek ve kullanmak gerekir javascript dan Sonra

<script> 
window.myApp = window.myApp || {}; 
window.myApp.userData = { "firstName": "John", "lastName": "Doe" }; 
</script> 

:

Temel olarak benzer bazı html oluşturmak gerekir. İşte

new Vue({ 
    el: '#app', 
    data: { 
     userData: myApp.userData 
    } 
}); 

bir örnek:

new Vue({ 
 
    el: '#app', 
 
    data: { 
 
    userData: myApp.userData 
 
    } 
 
});
<script> 
 
    window.myApp = window.myApp || {}; 
 
    window.myApp.userData = { "firstName": "John", "lastName": "Doe" }; 
 
</script> 
 

 

 
<div id="app"> 
 
    Hello {{userData.firstName}} 
 
</div> 
 

 
<script src="https://unpkg.com/vue/dist/vue.js"></script>

+0

Evet, bu yaklaşım çalışıyor. Ama ekstra değişken olmadan yapılabilir mi? – xAoc

+1

Buradaki fikir, bu bilgiyi sayfada bir yere göstermeniz gerektiğidir. Bu, bir değişken üzerinde, bir veri niteliği vb. Üzerinde yapılabilir. Bunun gibi değişkenlerin kullanılması (bir ad alanında), uygulamanız büyüdükçe akılda kalmayı kolaylaştırır. –

+0

Evet, fikri anlıyorum. Yerel, vue yolunu sordum. Bunu daha açık bir şekilde yapmanın bir yolu yoksa, bunu yapacağım. – xAoc