Ng-submit не работает в PHP-фреймворке Laravel

Всем, у меня есть еще один вопрос, связанный с Laravel / AngularJS.

В моем мини-проекте у меня есть форма, в которой пользователь может разместить вопрос в форме, но когда я нажимаю кнопку submit, запросов нет (из проверки в Google Chrome). Однако у меня интерфейс Log in, кнопка работает очень хорошо. Я использую ту же логику, ту же структуру html. И мне интересно, как я могу решить эту проблему.

Отлаживаю это 2 часа, давно гуглил. Пожалуйста, помогите мне !!

Ниже приведены коды.

// Добавить страницу с вопросом

<script type = "text/ng-template" id = "question.add.tpl">
    <div ng-controller = "QuestionAddController" class = "question-add container">
        <div class = "card">
            <form name = "question_add_form" ng-submit = "Question.add()">
                <div class = "input-group">
                    <label>Title</label>
                    <input type = "text"
                           name = "title"
                           ng-minlength = "5"
                           ng-maxlength = "255"
                           ng-model = "Question.new_question.title"
                           required>
                </div>
                <div class = "input-group">
                    <label>Description</label>
                    <textarea type = "text"
                              name = "desc"
                              ng-model = "Question.new_question.desc">
                    </textarea>
                </div>
                <div class = "input-group">
                    <button ng-disabled = "question_add_form.$invalid"
                            class = "primary"
                            type = "submit">Submit</button>
                </div>
            </form>
        </div>
    </div>
</script>

// Сервис и контроллер

.service('QuestionService', [
    '$http',
    '$state',
    function ($http, $state) {
        var me = this;
        me.new_question = {};

        me.go_add_question = function () {
            console.info(1);
            $state.go('question.add');
        };

        me.add = function () {
            if (!me.new_question.title)
                return;

            $http.post('/api/question/add', me.new_question)
                .then(function (r) {
                    console.info('r', r);
                    // if (r.data.status) {
                    //     console.info(r.data);
                    //     me.new_question = {};
                    //     $state.go('home');
                    // }
                }, function (e) {
                    console.info('e', e);
                })
        }
    }
])


.controller('QuestionAddController', [
    '$scope',
    'QuestionService',
    function (QuestionService, $scope) {
        $scope.Question = QuestionService;
    }
])

в QuestionService.add() в моем браузере нет "возвращаемого значения" (console.info('r', r);).

Я убеждаюсь, что маршруты и URL работают нормально, просто набрав адрес в браузере. Любое предложение будет высоко оценено!

Заранее спасибо!!!

Редактировать:

К тому же не работает кнопка Add Question. Мне нужно использовать ui-sref, чтобы перенаправить его на целевой URL, это будет причиной того, что кнопка submit не работает (например, я использую ui-sref, а не ng-submit для перенаправления)

// Добавить вопрос

<div class = "navbar clearfix">
    <div class = "container">
        <div class = "fl">
            <div class = "navbar-item brand">somethingHere</div>
            <form ng-submit = "Question.go_add_question()" id = "quick_ask" ng-controller = "QuestionAddController">
                <div class = "navbar-item">
                    <input ng-model = "Question.new_question.title" type = "text">
                </div>
                <div class = "navbar-item">
                    <button ui-sref = "question.add" type = "submit">Add question</button> <!--ui-sref = "question.add"-->
                </div>
            </form>
        </div>
        <blablabla something not important here!!!!>

Что отображается на вкладке сети в консоли разработчика?

georgeawg 27.07.2018 04:47

Привет, спасибо, что обратились к нам. В панели Network->XHR ничего не отображается. Я совершенно сбит с толку. Я перезапускаю свой сервер, но ничего не произошло.

Zhenye Na 27.07.2018 04:58
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
44
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваши инъекции в контроллере неправильного порядка. Должно быть

.controller('QuestionAddController', [
    '$scope',
    'QuestionService',
    function ($scope, QuestionService) {
        $scope.Question = QuestionService;
    }
])

Обновлено: Сам по себе порядок не имеет значения, но порядок аргументов функции контроллера должен соответствовать порядку в массиве. Например.

Верный:

['QuestionService', 'Service2', '$scope', function(QuestionService, Service2, $scope) { ...

Неправильно:

['QuestionService', 'Service2', '$scope', function(QuestionService, scope, Service2) { ...

Причина для определения контроллера с массивом состоит в том, чтобы код мог быть минифицированный

МОЙ БОГ!!!! Оно работает!!!!! Значит, переменная типа $scope, $http всегда должна быть первым аргументом? Не могли бы вы мне немного объяснить !!!!! Большое спасибо!!!!!!!! ^ _ ^

Zhenye Na 27.07.2018 05:06

Другие вопросы по теме