Masz rację w krokach, które opisałeś powyżej i myślę, że brakuje Ci tylko tego, że musisz podać parametr do przesłanej funkcji. Jako rekwizyt w szablonie vue przekazujesz ($event). W skrypcie strony (nazwa-strony.strona.js) możesz nazwać parametr dowolnie, w miejscu, w którym definiujesz przesłaną funkcję.
Chociaż wydaje się, że nie jest to potrzebne, podam tutaj dokładny przykład na wypadek, gdyby ktoś inny miał problemy z funkcjami ajax-form w Sails.js.
W Twoim szablonie (html):
<ajax-form
action="<camelcase of the file for your action>"
:handle-parsing="parseForm"
:submitted="submittedForm($event)"
@rejected="rejectedForm($event)"
:form-data="formData"
:form-rules="formRules"
:form-errors.sync="formErrors"
:cloud-error.sync="cloudError"
>
<input type="text" id="input1" v-model="input1">
Tutaj form-data
będzie odnosić się do obiektu, w którym dane są przechowywane. Klucze będą pochodzić z tego, co ustawiłeś w v-model' as for a given input.
form-rulesis where you specify an object of objects. They key of each is the input name from
v-modeland the value can be a string or array of strings for the rules set.
form-errorsspecifies an object where errors will go if the form triggers any errors upon submission. If this happens, data does not get sent to the server and neither the submitted or rejected function get run.
cloud-error.sync` określa obiekt, do którego trafią wszelkie błędy zaplecza, jeśli akcja zwróci odpowiedź inną niż 200.
W skrypcie strony (nazwa-strony.page.js):
data: {
formData: {},
formErrors: {},
formRules: {
input1: 'required'
},
cloudError: ''
},
methods: {
parseForm: function () {
// You can do parsing and custom validations here, but return all data
// you want to send to the server as an object called 'argins'
return argins;
},
submittedForm (data) {
// Here you can use any data that is returned from the action, like
console.log('returned data: ', data);
},
rejectedForm (err) {
// This function runs if the server returns a non-200 response
console.log(err);
}
}