AngularJS Form контроллер из директивы

Я пытаюсь отправить простую контактную форму. Форма находится внутри модальности начальной загрузки (не думайте, что это имеет какое-либо значение), но контроллер находится в директиве.

HTML для формы выглядит следующим образом:

<form name="contactForm" ng-submit="contactForm()" novalidate>
                <div class="form-group">
                    <div class="col-lg-6 col-md-6 col-sm-6">
                        <input type="text" placeholder="Full name" name="name" ng-minlength="3" max="20"
                               ng-model="name" id="name" class="form-control">
                    </div>
                    <div class="col-lg-6 col-md-6 col-sm-6">
                        <input type="email" ng-minlength="4" placeholder="Email address" name="contactEmail"
                               ng-model="email" class="form-control">
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-lg-12 col-md-12 col-sm-12">
                        <input type="text" ng-model="subject" name="subject" ng-minlength="10" id=""
                               placeholder="Subject" class="form-control">
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-lg-12 col-md-12 col-sm-12">
                        <textarea class="form-control" ng-model="message" name="message" ng-minlength="10"
                                  placeholder="Your message"></textarea>
                    </div>
                </div>
                <div class="modal-footer">
                    <div class="col-lg-12 col-md-12 col-sm-12">
                        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                        <input type="submit" class="btn btn-primary" value="Submit" />
                    </div>
                </div>
            </form>

Что я думаю, все хорошо. Тело моего контроллера выглядит так

    $rootScope.contactForm = contactForm();

function contactForm() {
  console.log('triggered!');
  var contactFormVars = {
    name: $rootScope.name,
    contactEmail: $rootScope.contactEmail,
    subject: $rootScope.subject,
    message: $rootScope.message
  }

  // With Promise
  Stamplay.Object('contactform')
    .save(contactFormVars)
    .then(function(res) {
      console.log('yes!');
    }, function(err) {
      console.log('No!');
    })

}

return directive;

};

РЕДАКТИРОВАТЬ: контроллер теперь выглядит так:

function contactForm($rootScope,$stamplay,$q) {
  $rootScope.data = {}

  $rootScope.data = {
    name: $rootScope.data.name,
    contactemail: $rootScope.data.contactemail,
    subject: $rootScope.data.subject,
    message: $rootScope.data.message
  }
  Stamplay.Object("contactform")
    .save($rootScope.data, function (err, res) {
      console.log(res);
      console.log(err);
      // res is the new car object
    });
}

Когда я нажимаю кнопку "Отправить", я получаю следующую ошибку, которую я гуглю

Error: v2.contactForm is not a function. (In 'v2.contactForm()',     'v2.contactForm' is an instance of FormController)
fn

Любая помощь с этим приветствуется.

РЕДАКТИРОВАТЬ

Хорошо, теперь я переместил js из директивы и поместил его в основной контроллер. На данный момент это не имеет никакого значения, только то, что ошибка изменилась очень незначительно:

angular.js:12722Error: v4.contactForm is not a function. (In 'v4.contactForm(ensureSafeObject(v5,text))', 'v4.contactForm' is an instance of FormController)

сноска

Не уверен, в чем разница между v2 и v4.

Любой совет, чтобы пройти этот блокатор приветствуется.

0 ответов

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