关于angularjs的模型绑定问题

我想写一个函数使得id转为name,但是在运行的时候会触发Error: $rootScope:infdig
Infinite $digest Loop,一直检测数据,导致死循环,请问有什么解决方法么?

 <html>
<meta charset="utf-8">
<script src="js/angular/angular.js"></script>
<script>
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope,$http) {
        $scope.id = 1524820173428;
        $scope.getName = function(id){
            $http({method:'GET',
                url:'http://202.120.40.87:22471/Entity/Ufadba7623f69b0/hw2/User/?User.id='+id
            }).then(function succeeCallback (response){
                alert("读取成功");
                alert("名字是:"+response.data.User[0].name);

                return response.data.User[0].name;
            },function errorCallback(response){
                alert("读取错误");
                return 0;
            })
        }
    });

</script>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
    姓名: <span ng-bind="getName(id)"></span>
</div>
</body>
</html>

首先, 我感觉你是请求函数里面写错了,成功函数里面会调用两个方法,一般的请求应该是这样,如下代码,你的then里面写了两个,不知道是不是这个原因导致你的问题
$http({
method: 'GET',
url: 'https://randomuser.me/api/'
}).success(function (data) { // 这里的data的类型是object,并且,它已经是返回数据的“数据”部分(如暂时不理解,后面会说到)
console.log(angular.toJson(data, true));
$scope.result = data;
}).error(function (err) {
console.log(err);
})

网上找到

大意是:angular有一个隐式的$watch来监测函数状态的变化,函数最少会调用两次,来对比状态是否改变。

你这里:你的函数里面是一个异步请求,状态改变会引发函数的重新请求,造成了无限循环。另外你这里有一个bug,succeeCallback 与 errorCallback 里的返回值只能返回这两个函数外,并不能返回到 getName函数外,所以你的getName函数返回的均为undefined。

解决:你可以定义一个$scope.userName。

<span ng-bind="userName"></span>

 $scope.getName = function(id){
        $http({method:'GET',
                url:'http://202.120.40.87:22471/Entity/Ufadba7623f69b0/hw2/User/?User.id='+id
        }).then(function succeeCallback (response){
                alert("读取成功");
                alert("名字是:"+response.data.User[0].name);
                $scope.name = response.data.User[0].name;
        },function errorCallback(response){
                alert("读取错误");
        })
}

$scope.getName($scope.id)