2017-01-07 31 views
1

我正在關注如何完成此操作的this答案(和this小提琴)。在ng-click上觸發ng-submit

檢視:

<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'); 

回答

1

貌似trigger不JQLite的一部分,它帶有角度。 您可能必須在加載angular之前加載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');