Bạn đã làm đúng trong các bước bạn đã mô tả ở trên, và tôi nghĩ rằng tất cả những gì bạn còn thiếu là bạn phải đặt tham số give cho hàm đã gửi của bạn. Với tư cách là chỗ dựa trong mẫu vue, bạn chuyển vào ($ event). Trong tập lệnh trang (page-name.page.js), bạn có thể đặt tên tham số là bất cứ thứ gì bạn muốn khi bạn xác định hàm đã gửi.
Mặc dù có vẻ như bạn không cần, nhưng tôi sẽ đưa ra một ví dụ kỹ lưỡng ở đây để phòng trường hợp bất kỳ ai khác gặp sự cố với các hàm dạng ajax trong Sails.js.
Trong mẫu của bạn (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">
Đây, form-data
sẽ tham chiếu đến một đối tượng mà dữ liệu được lưu trữ. Các khóa sẽ đến từ những gì bạn đặt v-model' as for a given input.
form-rules is where you specify an object of objects. They key of each is the input name from
v-model and the value can be a string or array of strings for the rules set.
form-error specifies 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` chỉ định một đối tượng sẽ xảy ra bất kỳ lỗi back end nào nếu hành động trả về phản hồi không phải 200.
Trong tập lệnh trang của bạn (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);
}
}