私はちょうどVue.jsを使い始めており、しばらく構築してきたアプリケーションに組み込むことを試みています。私のアプリはLaravel、相当量のjQueryなどを使って構築されています。AJAX部分ロード後のVueバインド?
私のアプリのすべてのナビゲーション要素は、部分ビューを返すためにAJAX(Vue経由ではありません)を使用しています。したがって、内部リンクまたはフォーム提出は、AJAX経由でLaravelルートに提出され、部分的に返されます。
私は最初のVueインスタンスを設定しましたが、訪問者がVueインスタンスが使用されているページに最初にアクセスしたときに要素にのみバインドされます。 Vueインスタンスはまだ存在しますが、ユーザーがページから離れて戻ったときに要素へのバインディングが失われます。おそらく、ユーザーがナビゲートしたときにDOMから要素が削除されたためです。
DOMに戻るとき(Vueで実行されないAJAXロードを介して)、Vueを要素にバインドさせるにはどうすればよいですか? (エリクサー/ Browserifyで消費される)
マイmain.js:
window.MaintenanceStatus = require('./components/Status.js');
Status.js
var Vue = require('vue');
Vue.use(require('vue-resource'));
module.exports = new Vue({
el: '#app',
data: {
message: ''
},
ready: function() {
this.message = 'loading ...';
},
methods: {
setMessage: function(message) {
this.message = message;
},
getStatus: function(url, data) {
this.message = 'loading ...';
this.$http.get(url, data)
.success(function(result) {
console.log('Status get success');
this.setMessage(result);
})
.error(function() {
console.log('Status get error');
this.setMessage('Error');
});
}
}
});
AJAXを介して返される部分/テンプレートで消費するコード...
@extends('layouts.partials.content')
@section('content')
<div id="app">
<pre>@{{ $data | json }}</pre>
</div>
@stop
@section('javascript')
<script type="text/javascript" class="document-script">
$(function()
{
var href ...
var data {...}
MaintenanceStatus.getStatus(href, data);
});
</script>
@stop
フルページの更新時に機能することに注意してください。ただし、別のページに移動すると(これもAJAX呼び出しです)私はこのビューに戻ります、私はちょうど{{$ data | json}} ... Vueはapp要素へのバインドを失ったようです。どうすれば元に戻すことができますか?
DOMを残してコンポーネントを作成していない要素にVueインスタンスをバインドしようとしましたが、同じ結果が得られます...コンポーネントは完全なページ更新時にレンダリングされますが、 AJAX。
私は$ mountを使いこなしてみましたが、それは効果がありませんでした。ここで
あなたのajax呼び出しの後にvueインスタンスを再コンパイルしてください。部分的なロードが完了したら、私の答えはこちらをご覧ください:http://stackoverflow.com/questions/30546370/how-to-make- vue-js-directive-working-in-an-appended-html要素/ 32757950#32757950 –