データを絞り込む機能を持っています。ユーザーが選択を変更するときはv-on:change
を使用していますが、ユーザーがデータを選択する前にも関数を呼び出す必要があります。以前はng-init
を使用していたAngularJS
でも同じことを実行しましたが、vue.js
にそのようなディレクティブがないことは理解できます
これは私の機能です:
getUnits: function () {
var input = {block: this.block, floor: this.floor, unit_type: this.unit_type, status: this.status};
this.$http.post('/admin/units', input).then(function (response) {
console.log(response.data);
this.units = response.data;
}, function (response) {
console.log(response)
});
}
blade
ファイルでは、フィルターを実行するためにブレードフォームを使用します。
<div class="large-2 columns">
{!! Form::select('floor', $floors,null, ['class'=>'form-control', 'placeholder'=>'All Floors', 'v-model'=>'floor', 'v-on:change'=>'getUnits()' ]) !!}
</div>
<div class="large-3 columns">
{!! Form::select('unit_type', $unit_types,null, ['class'=>'form-control', 'placeholder'=>'All Unit Types', 'v-model'=>'unit_type', 'v-on:change'=>'getUnits()' ]) !!}
</div>
特定の項目を選択したときには、これでうまくいきます。それから私がすべてをクリックすればall floors
と言うことができ、それは動作します。私が必要なのは、ページがロードされたときに、空の入力で$http.post
を実行するgetUnits
メソッドを呼び出すことです。バックエンドでは、入力が空の場合にすべてのデータを返すようにリクエストを処理しました。
どうすればvuejs2
でこれを行うことができますか?
私のコード: http://jsfiddle.net/q83bnLrx
この関数はVueコンポーネントの beforeMount セクションで呼び出すことができます。
....
methods:{
getUnits: function() {...}
},
beforeMount(){
this.getUnits()
},
......
作業フィドル: https://jsfiddle.net/q83bnLrx/1/
Vueにはさまざまなライフサイクルフックがあります。
私は少数を挙げました:
vm.$el
に置き換えられたところでインスタンスがマウントされた直後に呼び出されます。ここで完全なリスト を見ることができます 。
どのフックが自分に最も適しているかを選択し、それをフックして上記のサンプルコードのように機能させることができます。
あなたはこのようなことをする必要があります(あなたがページロードでメソッドを呼びたいなら):
new Vue({
// ...
methods:{
getUnits: function() {...}
},
created: function(){
this.getUnits()
}
});
mounted
を使ってこれを行うこともできます
https://vuejs.org/v2/guide/migration.html#ready-replaced
....
methods:{
getUnits: function() {...}
},
mounted: function(){
this.$nextTick(this.getUnits)
}
....