调用validatePromo函数成功后,如何获取按钮的rel属性?
这有几个靠谱的方法能帮你在validatePromo函数执行成功后拿到按钮的rel属性,根据你的场景选就行:
方法1:通过$event传递点击事件对象
这是最直接的方式,修改按钮的ng-click,把点击事件对象传进函数里:
<button type="submit" rel="next" class="btn btn-primary btn-block" ng-click="vm.validatePromo($event)">Validate</button>
然后在你的validatePromo函数里,就能通过事件对象拿到触发点击的按钮元素,进而获取rel属性:
vm.validatePromo = function(event) { // 这里是你的验证逻辑,成功后执行下面的代码 // 用currentTarget更稳妥,确保拿到的是绑定ng-click的按钮本身(避免按钮有子元素时target指向子元素) const buttonRel = event.currentTarget.getAttribute('rel'); console.log(buttonRel); // 输出 "next" };
方法2:通过DOM选择器直接定位元素
如果不方便修改ng-click的参数,也可以在验证成功后,通过按钮的类或唯一标识来获取元素:
vm.validatePromo = function() { // 你的验证逻辑... // 验证成功后获取按钮(建议给按钮加唯一id,避免同类按钮干扰) const promoButton = document.querySelector('.btn-primary.btn-block'); if (promoButton) { const buttonRel = promoButton.getAttribute('rel'); console.log(buttonRel); } };
小提醒:如果页面上有多个相同类的按钮,最好给这个按钮加个唯一id(比如<button id="promoValidateBtn" ...>),然后用document.getElementById('promoValidateBtn')来获取,这样不会出错。
方法3:用AngularJS的绑定方式(推荐)
既然用了AngularJS,尽量遵循它的MVVM模式,避免直接操作DOM。你可以把rel的值绑定到控制器的变量上:
<button type="submit" rel="{{vm.buttonRel}}" class="btn btn-primary btn-block" ng-click="vm.validatePromo()">Validate</button>
然后在控制器里初始化这个变量:
vm.buttonRel = 'next'; vm.validatePromo = function() { // 你的验证逻辑... // 验证成功后直接用vm.buttonRel就行 console.log(vm.buttonRel); // 输出 "next" };
这种方式不需要手动操作DOM,更符合AngularJS的设计理念,也更容易维护和测试。
内容的提问来源于stack exchange,提问作者Sukesh Gurmekodi
相关产品推荐
相关产品推荐

