查看:
<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不是函数
...在指令中突出显示的行上。看看文档,这似乎是正确的。它失败的原因是什么?
解答: (如果需要jQuery答案,请查看下面的答案)
一种纯粹的角度方式是:
angular.element(element).triggerHandler('submit');
答案 0 :(得分:1)
看起来trigger
不是角色附带的JQLite的一部分。
您可能必须在加载角度之前加载JQuery。
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
OR
作为构建管道的一部分(grunt / gulp / webpack等)
答案 1 :(得分:0)
请参阅jQuery方法的其他答案。对于我使用的纯角度方法:
angular.element(element).triggerHandler('submit');