2017-01-07 5 views
1

これを達成する方法については、thisの回答(およびthisフィドル)に従っています。ng-clickでトリガーを送信する

ビュー:

<section> 
    <form style="display: none" id="addFriendForm" name="vm.form.addFriendForm" class="form-horizontal" submit-on="submitAddFriendForm" ng-submit="vm.save(vm.form.addFriendForm.$valid)" novalidate> 
     <input ng-model="vm.userInput" required> 
    </form> 
    <div class="list-group"> 
     <a ng-repeat="user in vm.users" ng-click="vm.triggerSubmit(user)" class="list-group-item"> 
      ... 
     </a> 
    </div> 
</section> 

指令:

function submitOn() { 
    return { 
     link: function postLink(scope, element, attrs) { 
      scope.$on(attrs.submitOn, function() { 
       setTimeout(function() { 
        // Error: 
        element.trigger('submit'); 
       }); 
      }); 
     } 
    }; 
} 

コントローラ:triggerSubmit

// Trigger submit of the form 
function triggerSubmit(user) { 
    vm.userInput = user; 
    $scope.$broadcast('submitAddFriendForm'); 
} 
ラインディレクティブで強調表示に...

TypeError: element.trigger is not a function

これを歩いて、私はエラーを取得します。ドキュメントを見ると、これは正しいようです。それが失敗する理由は何ですか?

ANSWER: (jQueryの答えが望まれる場合は、以下の回答を見て)

それを行うための純粋な角度の方法は次のとおりです。

angular.element(element).triggerHandler('submit'); 

答えて

1

triggerではないように見えます角度の付いたJQLiteの一部。 角度をロードする前にJQueryをロードする必要があります。ビルドパイプラインの一部として

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>

OR

(イサキ/一気/ WebPACKのなど)

+0

ありがとう!私はこれが働いたように感じる代わりに、それを行う角度の方法を見つけた – wmash

+0

ああいいね。それはさらに良いです。どのように私たちに教えるためにケア? – Chanthu

0

は、jQueryのアプローチのための他の回答を参照してください。純粋な角度のアプローチのために、私は以下を使用しました:

angular.element(element).triggerHandler('submit'); 
関連する問題