循环访问嵌套会导致挖空
looping through nested results in knockout
我有这个获取/调用方法获取数据,并且基于OnSuccess,它将进行另一个获取/调用以获取更多数据。我想显示从两个 get 方法返回的数据。
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);
}
因此,总体结果将如下所示:
老师:马特
TA:史蒂夫
学生:玛姬、桑迪
试试这个,请注意它没有经过测试,可能会失败,如果你遇到错误,请告诉我,以便我们查看它。另请注意,我可能已经使用挖空虚拟绑定制作了一个类型
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
<div data-bind="foreach: userPositions">
<span data-bind="text: position.PositionName"></span>: <!-- ko foreach: users --> <span data-bind="text: Name"></span><!-- /ko -->
</div>
相关文章:
- 访问嵌套JSON对象的键,其中键是动态的
- 访问嵌套函数结构中的JavaScript父函数变量
- 如何使用其他地方指定的访问信息访问嵌套的json对象,而不使用eval或迭代
- 访问嵌套 json 对象的属性将返回未定义
- 从另一个(初学者内部)访问嵌套的javascript函数
- 如何使用替换器 param json.stringify 访问嵌套对象
- 循环访问嵌套的 JSON 数组
- 如何访问嵌套的表单ng包含范围/字段
- 访问嵌套对象中父对象的属性
- 聚合物数据绑定:如何访问嵌套模板中的数据
- 访问嵌套Polymer自定义元素中的JavaScript方法
- 在全局范围内访问嵌套变量的 Nodejs
- 访问嵌套在 YUI 代码块中的函数
- AngularJS - 如何访问嵌套ng-repeat中的数组
- D3 循环访问嵌套数据
- 如何访问嵌套的 iframe
- 访问嵌套函数中的 javascript 对象属性
- 如何在 JS 中循环访问嵌套对象
- 访问嵌套的 json 数组字段
- 使用 AngularJS 访问嵌套 JSON