AngularJS中如何通过ng-intl-tel-input指令获取国家代码
解决AngularJS中获取ng-intl-tel-input国家代码的问题
嘿,作为AngularJS新手,遇到这种数据绑定的问题太正常了,我来帮你搞定!
你现在用原生JSdocument.getElementById拿手机号的方式其实绕远路了,完全没用到Angular数据绑定的优势。你已经在HTML里通过data-selected-country="selected.country"把选中的国家代码绑定到了selected.country,直接从Angular的作用域里取就好,根本不用手动操作DOM。
具体修改步骤:
先在控制器里初始化绑定变量
在你的控制器里,先声明$scope.updating和$scope.selected这两个对象,避免出现undefined的情况:angular.module('你的应用模块名').controller('对应的控制器名', function($scope) { // 初始化双向绑定的变量 $scope.updating = { phone: '' }; $scope.selected = { country: '' }; // 重写你的getviewed函数 $scope.getviewed = function() { var form = new FormData(); // 直接从作用域获取手机号和国家代码 var phoneNumber = $scope.updating.phone; var countryCode = $scope.selected.country; // 按需把数据加到FormData里 form.append('phone', phoneNumber); form.append('country_code', countryCode); // 这里写你的后续提交逻辑,比如发送请求等 }; });给提交按钮绑定Angular函数
记得你的提交按钮要通过ng-click调用这个Angular作用域里的函数,比如:<button ng-click="getviewed()" type="button">提交</button>
为什么不推荐用原生JS操作DOM?
AngularJS的核心就是数据双向绑定,直接操作DOM会绕过Angular的脏检查机制,不仅不符合框架的设计思路,还容易出现数据不同步的问题。用$scope里的变量直接取值才是Angular开发的正确姿势~
这样修改后,你就能轻松获取到选中的国家代码和手机号啦!
内容的提问来源于stack exchange,提问作者amit




