Я следую this Ответ (и this скрипка) о том, как это сделать.Trigger ng-submit on 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
... на линии выделены в директиве. Глядя на документы, это кажется правильным. В чем причина неудачи?
ОТВЕТ: (если ответ JQuery желанной, посмотрите на нижеприведенный ответ)
Чистый угловой способ сделать это:
angular.element(element).triggerHandler('submit');
Спасибо! Я чувствую, что это сработает, но вместо этого я нашел угловатый способ сделать это. – wmash
А хорошо. Это даже лучше. Позаботьтесь о том, как? – Chanthu