Tengo una función que ayuda a filtrar datos. Estoy usando v-on:changecuando un usuario cambia la selección, pero también necesito que se llame a la función incluso antes de que el usuario seleccione los datos. He hecho lo mismo con el AngularJSuso anterior, ng-initpero entiendo que no existe tal directiva envue.js
Esta es mi función:
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)
});
}
En el bladearchivo utilizo formularios de hoja para realizar los filtros:
<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>
Esto funciona bien cuando selecciono un elemento específico. Entonces, si hago clic en todos all floors, digamos , funciona. Lo que necesito es cuando se carga la página, llama al getUnitsmétodo que realizará la $http.postentrada vacía. En el backend, he manejado la solicitud de una manera que si la entrada está vacía, dará todos los datos.
¿Cómo puedo hacer esto vuejs2?
Mi código: http://jsfiddle.net/q83bnLrx
fuente

Debe hacer algo como esto (si desea llamar al método al cargar la página):
new Vue({ // ... methods:{ getUnits: function() {...} }, created: function(){ this.getUnits() } });fuente
createdlugar.también puedes hacer esto usando
mountedhttps://vuejs.org/v2/guide/migration.html#ready-replaced
.... methods:{ getUnits: function() {...} }, mounted: function(){ this.$nextTick(this.getUnits) } ....fuente
Tenga en cuenta que cuando el
mountedevento se activa en un componente, no todos los componentes de Vue se reemplazan todavía, por lo que es posible que el DOM aún no sea definitivo.Para simular realmente el
onloadevento DOM , es decir, para disparar después de que DOM esté listo pero antes de que se dibuje la página, use vm. $ NextTick desde adentromounted:mounted: function () { this.$nextTick(function () { // Will be executed when the DOM is ready }) }fuente
Si obtiene datos en una matriz, puede hacer lo siguiente. Ha funcionado para mi
<template> {{ id }} </template> <script> import axios from "axios"; export default { name: 'HelloWorld', data () { return { id: "", } }, mounted() { axios({ method: "GET", "url": "https://localhost:42/api/getdata" }).then(result => { console.log(result.data[0].LoginId); this.id = result.data[0].LoginId; }, error => { console.error(error); }); }, </script>fuente