これを達成する方法については、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');
ありがとう!私はこれが働いたように感じる代わりに、それを行う角度の方法を見つけた – wmash
ああいいね。それはさらに良いです。どのように私たちに教えるためにケア? – Chanthu