2017-12-01 5 views
0

AngularJSのコントローラ機能からフォームを送信しようとしています。ターゲットサイト は、jQueryを使用するとクロスドメインエラーが発生するため、jQueryを使用しないでこれを行う必要があります。私はちょうどフォームを投稿する必要があります。 jQueryを使用せずにコントローラから行うことは可能ですか?AngularJSコントローラからDOMにアクセスするには?

私は$ elementサービスを使用しようとしましたが、それを行うjquery方法と思われ、実際にはターゲットURLには行っていません。 ありがとうございます。

<form name="myForm" id="myForm" method="post" action="@Model.Settings["URL"]" ng-controller="FormCtrl as fctrl"> 
</form> 

setControllers.controller('FormCtrl', ['$scope', '$state', '$element', 'DataService', 
     function ($scope, $state, $element, service) { 

      var fctrl = this; 

      function init() { 
      $element.find('#myForm').submit(); 
      }; 

      init(); 
     }]); 

答えて

0

さて、あなたは完全に

function init() { 
    document.getElementById("myForm").submit(); 
}; 

を行うことができますが、私の解決策、またあなたのアプローチでもないが、非常に角度っぽいです。あなたはたぶん何らかの指示に従うべきです。

0

フォームを提出する角度は、ng-submitです。ここでしゃれ意図し、あなたが最も単純な形式で、それを達成する方法の例です:

とにかく

html

<html ng-app="FormModule"> 
    <section ng-controller="formController as form"> 
     <form ng-submit="form.submit()"> 
      <label>Name</label> 
      <input ng-model="form.data.name" placeholder="Insert your name" /> 
      <button type="submit">Submit My Name To The Server</button> 
     </form> 
    </section> 
</html> 

javascript

angular 
    .module('FormModule', []) 
    .controller('formController', formCtrl); 

formCtrl.$inject = ['$scope']; // or whatever injection 

function formCtrl($scope) { 
    var form = this; 
    form.data = {}; // ng-model form.data.name will be available in this 
    form.submit = submitTheForm; 

    function submitTheForm() { 
     $.post('url', form.data); // or whatever HTTP service you're using 
    } 
} 

、あなたが理解し、より良い角度コードを書くために、ここで私はより良い書き方を学び、それは上のコードに反映されています

  1. John Papa Angular 1.x Styleguide
  2. ngSubmit Documentation
関連する問題