Você está correto nas etapas descritas acima, e acho que tudo o que está faltando é que você tenha que colocar o parâmetro give na sua função enviada. Como um prop no template vue, você passa ($event). No script da página (page-name.page.js) você pode ter o parâmetro com o nome que quiser onde você define a função submetida.
Embora pareça que você não precisa disso, vou colocar um exemplo completo aqui caso alguém esteja tendo problemas com funções de formulário ajax em Sails.js.
No seu modelo (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">
Aqui,
form-data
irá se referir a um objeto que os dados são armazenados. As chaves virão do que você definiu no 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` especifica um objeto onde quaisquer erros de back-end irão se a ação retornar uma resposta diferente de 200. Em seu script de página (page-name.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);
}
}