SailsJS: получить ответ Ajax-формы SailsJS в представленной функции - PullRequest
0 голосов
/ 09 октября 2018

Я хочу получить объект из действия, которое вызывается компонентом формы ajax.

Шаги для воспроизведения.

  1. создать форму ajax, в которой выпередача значений для модели (например, заголовок и описание для сообщения)

  2. После обработки формы отправки, давайте передадим данные в действие

  3. В этом действии вы сохраните данные в MongoDB и извлечете созданные данные с помощью .fetch ()

  4. Вы передадите эти данные в exits.success(fetchedData)

  5. Попробуйте получить данные в функции submitForm в файле xxxx.page.js

Я не могу получить данные.Я зарегистрировал ajax-form.components.js.В строке 398 мы выдаем результат (результат должен иметь наши данные, в моем случае это факт), но после этого результат исчезает.Может быть, я неправильно понимаю, очевидно, я делаю что-то неправильно.

Если вам нужна дополнительная информация, дайте мне знать.

1 Ответ

0 голосов
/ 17 октября 2018

Вы правы в шагах, которые вы описали выше, и я думаю, что все, что вам не хватает, - это то, что вы должны задать параметр give для переданной вами функции.В качестве опоры в шаблоне vue вы передаете ($ event).В скрипте страницы (page-name.page.js) вы можете присвоить параметру имя как угодно, где вы определяете переданную функцию.

Хотя это не похоже на то, что вам это нужно, я приведу здесь подробный пример на случай, если у кого-то еще возникнут проблемы с функциями ajax-формы в Sails.js.

В вашем шаблоне (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">

Здесь form-data будет ссылаться на объект, который хранится в данных.Ключи будут исходить из того, что вы установили 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-errors 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`, указывающий объект, на который будут идти любые ошибки на стороне сервера, если действие возвращаетответ не из 200.

В вашем скрипте страницы (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);
    }
}
...