Angularjs 从Angular controller中的MVC控制器读取返回的JSON数据

Angularjs 从Angular controller中的MVC控制器读取返回的JSON数据,angularjs,sql-server,asp.net-mvc,Angularjs,Sql Server,Asp.net Mvc,我对AngularJS很陌生,如果这是一个简单的问题,请接受我的道歉。我也希望问题的标题可以理解 我正在使用AngularJS和ASP.NETMVC应用程序准备SQL server表中的数据,然后在视图中显示数据。一切看起来都很好,但当我尝试向前一步执行更高级的任务时,我发现我无法从角度模块读取对象 例如,我想读取一个用户的联系人详细信息,每个用户有不同数量的联系人。因此,ng repear limito不应相同。为此,我想读取一些数据,然后将一个变量设置为在数据库中找到的项数,然后在我的ng

我对AngularJS很陌生,如果这是一个简单的问题,请接受我的道歉。我也希望问题的标题可以理解

我正在使用AngularJS和ASP.NETMVC应用程序准备SQL server表中的数据,然后在视图中显示数据。一切看起来都很好,但当我尝试向前一步执行更高级的任务时,我发现我无法从角度模块读取对象

例如,我想读取一个用户的联系人详细信息,每个用户有不同数量的联系人。因此,
ng repear limito
不应相同。为此,我想读取一些数据,然后将一个变量设置为在数据库中找到的项数,然后在我的
ng repear limito

这是我观点的一部分:

<table>
<tr ng-repeat="contact in users | limitTo:loopVar">
    <td>
        <div ng-show="!contactsElements" class="item_list">{{contact.contacts + " (" + contact.contactDesc + ")"}}</div>
    </td>
</tr>
MVC控制器如下所示:

public JsonResult GetUser()
    {
        User userData = (User)Session["user"];            
        var db = new testDBEntities();
        return this.Json((from userObj in db.Users
                          join uc in db.UserContacts
                          on userObj.Id equals uc.usrID
                          join us in db.Users
                          on userObj.usrSupervisor equals us.Id
                          where userObj.Id.Equals(userData.Id)
                          select new
                          {
                              Id = userObj.Id,
                              usrNme = userObj.usrNme,
                              fName = userObj.usrFirstName,
                              lName = userObj.usrLastName,
                              ssno = userObj.usrSSN,
                              contacts = uc.usrContact,
                              contactDesc = uc.usrContactDescription,
                          })
                          , JsonRequestBehavior.AllowGet
                        );
    }
我希望你能理解我的观点。。。通常,在视图中使用Angular controller之前,如何读取返回的
JSON
对象?如您所见,我可以使用
ng repeat
指令读取视图中的数据,但我不知道如何准备角度控制器中的单个字段


谢谢

返回的数据对象是按照您在控制器JsonResult中指定的方式格式化的

要获取从控制器传递的数组中的每个参数,请执行GetUser函数

$http.get('/Home/GetUser')
    .success(function (result) {
        $scope.users = result;

        //Loop the json
        if (result != null) {
            for (var i = 0; i < result.length; i++) {

                //Then you get the values like this

                //result[i].Id; 
                //result[i].usrNme; 
                //result[i].fName; 
                //result[i].lName; 
                //result[i].ssno; 
                //result[i].contacts; 
                //result[i].contactDesc; 

                }
        }

    })
    .error(function (data) {
        console.log(data);
    });
你的客户呢

$http.get('/Home/GetLoopVar')
    .success(function (result) {

        $scope.loopVar = result;

        //$scope.loopVar = "Im a var"

    })
    .error(function (data) {
        console.log(data);
    }); 
为了将两者结合起来并实现这里的目标,我首先要确保设置了过滤器中使用的范围值。 设置loopVar后,获取用户。 一种方法是在设置loopVar值后调用getUsers函数,如下所示

myApp.controller('mainController', function ($scope, $http) {

    $scope.getLoopVar = function(){
        $http.get('/Home/GetLoopVar')
            .success(function (result) {
                $scope.loopVar = result;

                //Call get user function
                $scope.getUsers();
            })
            .error(function (data) {
                console.log(data);
            });
    };

    $scope.getUsers = function(){
        $http.get('/Home/GetUser')
            .success(function (result) {
                $scope.users = result;
            })
            .error(function (data) {
                console.log(data);
            });
    };

    //To get the values on load, call the $scope.getLoopVar() in the controller
    $scope.getLoopVar();
}

在哪里定义了
loopVar
?它似乎不是来自服务器的
users
数组的属性……我还没有它,我想知道如何从Angular controller中返回的JSON中读取一些数据库对象,然后将该值分配给$scope.loovar您可以在
回调中分配它。success
回调,与分配
$scope.users的方式相同。如果尝试在
.success
外部分配该值,则该值将不存在,因为服务器尚未返回响应(异步)。如果您不确定,可能需要阅读async。另外,值得注意的是,
.success
已被弃用,建议您改用
。然后
。非常感谢您的评论。好的,如果您看到我的代码,我将整个对象分配到
.success
中的
$scope.users=result
。而且它工作正常。。。如果我想阅读特定的数据,该怎么办?例如用户名
$scope.username=result.usrNme
。。。如果
结果
是一个单独的对象,那么假设它在
中,那么应该可以正常工作。成功
…非常感谢,这非常有用!乐意帮忙:)
$http.get('/Home/GetLoopVar')
    .success(function (result) {

        $scope.loopVar = result;

        //$scope.loopVar = "Im a var"

    })
    .error(function (data) {
        console.log(data);
    }); 
myApp.controller('mainController', function ($scope, $http) {

    $scope.getLoopVar = function(){
        $http.get('/Home/GetLoopVar')
            .success(function (result) {
                $scope.loopVar = result;

                //Call get user function
                $scope.getUsers();
            })
            .error(function (data) {
                console.log(data);
            });
    };

    $scope.getUsers = function(){
        $http.get('/Home/GetUser')
            .success(function (result) {
                $scope.users = result;
            })
            .error(function (data) {
                console.log(data);
            });
    };

    //To get the values on load, call the $scope.getLoopVar() in the controller
    $scope.getLoopVar();
}