use*_*679 5 angularjs angularjs-ng-click
我正在使用AngularJS创建表单向导.
想想每个字段集如下:
<div ng-controller="MyController as fs">
<fieldset>
...
<button ng-click="fs.StepForward($event)">Next</button>
</fieldset>
<fieldset>
...
<button ng-click="fs.StepBackward($event)">Previous</button>
<button ng-click="fs.StepForward($event)">Next</button>
</fieldset>
</div>
Run Code Online (Sandbox Code Playgroud)
我所做的是,在我的控制器中找到了当前的字段集和下一个字段集,如下所示:
app.controller("MyController", function() {
var ft = this;
ft.StepForward = function(event) {
// It's here that I need to find the fieldset
ft.current_fs = event.currentTarget.parentNode;
ft.next_fs = event.currentTarget.parentNode.nextElementSibling;
}
});
Run Code Online (Sandbox Code Playgroud)
首先,我不确定这是否是绝对最好的方法,但它确实有效.
至于我的主要问题...在其中一个字段集中,我有一些li元素,如果单击某些元素,我想自动触发单击NEXT按钮.
我尝试添加ng-click:
<fieldset>
<ul>
<li><a ng-click="fs.TriggerClick($event)">Some Itme</a></li>
</ul>
<button id="MyButtonTest" ng-click="fs.StepForward($event)">Next</button>
</fieldset>
app.controller("MyController", function() {
var ft = this;
ft.StepForward = function(event) {
// It's here that I need to find the fieldset
ft.current_fs = event.currentTarget.parentNode;
ft.next_fs = event.currentTarget.parentNode.nextElementSibling;
}
ft.TriggerClick = function(event) {
angular.element('#MyButtonTest').trigger('click');
}
});
Run Code Online (Sandbox Code Playgroud)
但是当我创建一个触发单击按钮的函数时,我得到了错误:
Error: $rootScope:inprog Action Already In Progress
Run Code Online (Sandbox Code Playgroud)
所以我想要达到jQuery,但我确信有一种有角度的方式来做到这一点.
你必须打破当前的$ apply()循环.一种方法是使用$ timeout()(查看原因)
试试这个:
<fieldset>
<ul>
<li><a ng-click="triggerClick()">Some Item</a></li>
</ul>
<button id="MyButtonTest" ng-click="fs.StepForward($event)">Next</button>
</fieldset>
Run Code Online (Sandbox Code Playgroud)
调节器
$scope.triggerClick = function(){
$timeout(function() {
angular.element('#MyButtonTest').triggerHandler('click');
}, 0);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16348 次 |
| 最近记录: |