Angularjs 从Angular controller中的MVC控制器读取返回的JSON数据
我对AngularJS很陌生,如果这是一个简单的问题,请接受我的道歉。我也希望问题的标题可以理解 我正在使用AngularJS和ASP.NETMVC应用程序准备SQL server表中的数据,然后在视图中显示数据。一切看起来都很好,但当我尝试向前一步执行更高级的任务时,我发现我无法从角度模块读取对象 例如,我想读取一个用户的联系人详细信息,每个用户有不同数量的联系人。因此,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
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();
}