Javascript 通过嵌套循环将导致淘汰
我有一个获取数据的get/call方法,基于成功,它将进行另一个get/call来获取更多数据。我想显示从两个get方法返回的数据Javascript 通过嵌套循环将导致淘汰,javascript,linq,knockout.js,Javascript,Linq,Knockout.js,我有一个获取数据的get/call方法,基于成功,它将进行另一个get/call来获取更多数据。我想显示从两个get方法返回的数据 var getInfo = function () { Ajax.Get({ Url: //URL, DataToSubmit: { id: properties.Id }, DataType: "json", OnSuccess: function (d
var getInfo = function () {
Ajax.Get({
Url: //URL,
DataToSubmit: { id: properties.Id },
DataType: "json",
OnSuccess: function (data, status, jqXHR) {
viewModel.PositionTypes = data; //ex return: Teacher, TA, Students
Ajax.Get({
Url: //URL,
DataToSubmit: { pageNumber: 1, id: properties.Id },
DataType: "json",
OnSuccess: function (data, status, jqXHR) {
viewModel.Users = data; //ex return: Matt, Steve, Maggie, Sandy
//Combine both results based on the Content Role
//Some type of loop between the positionTypes and users where the content role will be equal
}
});
}
});
};
查看模型
// the ViewModel for a single User
var userViewModel = function (data) {
var _self = this;
_self.ID = ko.observable(data.ID);
_self.Name = ko.observable(data.Name);
_self.Email = ko.observable(data.Email);
_self.ContentRole = ko.observable(data.ContentRole);
};
// the ViewModel for a single Position
var positionsViewModel = function (data) {
var _self = this;
_self.ContentRole = ko.observable(data.ContentRole);
_self.PositionName = ko.observable(data.PositionName);
_self.PositionRank = ko.observable(data.PositionRank);
_self.UserCount = ko.observable(data.UserCount);
}
因此,总体结果如下所示:
老师:马特助教:史蒂夫
学生:Maggie,Sandy试试这个,请注意它没有经过测试,可能会失败,如果你有错误,请告诉我,以便我们可以查看它。还请注意,我可能已经用敲除虚拟绑定创建了一个类型
var viewUsersPositionModel = function(){
var _self = this;
_self.users = ko.observableArray();
_self.position = ko.observable();
}
var viewModel = function(){
var _self = this;
_self.userPositions = ko.observableArray();
}
var userViewModel = function (data) {
var _self = this;
_self.ID = ko.observable(data.ID);
_self.Name = ko.observable(data.Name);
_self.Email = ko.observable(data.Email);
_self.ContentRole = ko.observable(data.ContentRole);
};
// the ViewModel for a single Position
var positionsViewModel = function (data) {
var _self = this;
_self.ContentRole = ko.observable(data.ContentRole);
_self.PositionName = ko.observable(data.PositionName);
_self.PositionRank = ko.observable(data.PositionRank);
_self.UserCount = ko.observable(data.UserCount);
}
var getInfo = function () {
Ajax.Get({
Url: //URL,
DataToSubmit: { id: properties.Id },
DataType: "json",
OnSuccess: function (positionData, status, jqXHR) {
Ajax.Get({
Url: //URL,
DataToSubmit: { pageNumber: 1, id: properties.Id },
DataType: "json",
OnSuccess: function (userData, status, jqXHR) {
var vm = new viewModel();
for(var i in positionData)
{
var position = positionData[i];
var userPositionViewModel = new viewUsersPositionModel();
userPositionViewModel.position(new positionsViewModel(position));
for(var j in userData)
{
var user = userData[j];
if(user.ContentRole === position.ContentRole)
{
userPositionViewModel.users.push(new userViewModel(user));
}
}
vm.userPositions.push(userPositionViewModel);
}
ko.applyBindings(vm);
}
});
}
});
};
HTML
:
返回的数据是什么样子的?您如何知道Matt是一名教师,因为上面的这个例子并不能说明这一点clear@Armand我在代码中做了一个小评论,它取决于用户的内容角色和位置-当它们匹配时,用户会选择两个内容角色值相同的位置。我将为每一行创建大多数视图模型,可能会有所帮助我现在正在尝试这一点当我运行代码时,我得到错误uncaughttypeerror:undefined不是这一行的函数:var vm=new viewModel()代码>这也是我之前问过的一个问题,我的布局中哪一个更重要?如果你能仔细查看并指出我可能做错了什么,那就太好了。谢谢
<div data-bind="foreach: userPositions">
<span data-bind="text: position.PositionName"></span>: <!-- ko foreach: users --> <span data-bind="text: Name"></span><!-- /ko -->
</div>