Angularjs指令数据远程请求的处理
2014年9月6日 · 57 字 · 1 分钟
假设有一个指令用来根据IP地址进行地位,获取实际地址。
首先,我们的IP地址是由后台PHP程序返回的,这里需要一个Http请求,使用了Http请求就会有类似回调的问题,之前想了各种办法,死活拿不到数据,后来去ng官网看了下,需要使用ngModel,这个是双向绑定。
指令代码
app.directive('location', ['ApiService', function (ApiService) {
return {
restrict: 'A',
require:'ngModel',
link: function (scope, ele, attrs,ngModel) {
ele.addClass('opt');
ele.bind('click', function () {
ele.text('定位中...');
ApiService.location(ngModel.$viewValue).success(function (data) {
ele.text(data.country + ' ' + data.region + ' ' + data.city + ' ' + data.isp);
});
});
}
};
}]);
HTML部分
<span location ng-model="user.login_ip">定位</span>
JS中的ngModel 会去搜索该指令的元素上的ng-model指令,这里会搜索到一个user.login_ip 的model,然后JS中使用ngModel.$viewValue 就可以拿到值了。