Не могу понять, как решить мою текущую ситуацию. У меня есть сложные объекты javascript, представляющие «организацию». На странице, список этих организаций погрузили с помощью запроса Ajax получить и заталкивает в наблюдаемый массив ко, например, так:Как сделать ajax Сообщение одного сложного объекта JSON в наблюдаемом массиве нокаута?
$.getJSON(apiBaseUrl + "?userId=" + userId, function (data) {
$.each(data, function() {
var dropdownOrg = new DropdownOrg();
var org = new Organization();
$.each(this, function (k, v) {
if (k === "UserGuid") {
org.userGuid = v;
}
if (k === "OrgId") {
dropdownOrg.orgId = v;
org.orgId = v;
}
if (k === "OrgName") {
dropdownOrg.name = v;
org.orgName = v;
}
if (k === "IsHiring") {
org.isHiring = v;
}
if (k === "Blurb") {
org.blurb = v;
}
if (k === "HqLocCity") {
org.hqLocCity = v;
}
if (k === "HqLocCountry") {
org.hqLocCountry = v;
}
if (k === "NumberOfEmployees") {
org.numberOfEmployees = v;
self.selectedEmployee(v);
}
if (k === "OrgImg") {
org.orgImg = v;
}
if (k === "Ownership") {
org.ownership = v;
self.selectedOwnership(v);
}
if (k === "Website") {
org.website = v;
}
});
self.orgDdl.push(dropdownOrg);
self.orgs.push(org);
});
});
self.OrgDdl является наблюдаемой массив, который содержит только достаточно данных, так что я могу переключить какую организацию я просматриваю на странице (переключение видимости). self.orgs - это наблюдаемый ko массив, в котором хранятся все данные, которые мне нужно сохранить с помощью ajax PUT. Объект организации выглядит следующим образом (остерегайтесь, некрасиво):
function Organization(userGuid,
orgId,
orgName,
orgImg,
isHiring,
blurb,
numberOfEmployees,
hqLocCity,
hqLocCountry,
website,
ownership)
{
var self = this;
self.userGuid = userGuid;
self.orgId = orgId;
self.orgName = ko.observable(orgName);
self.isHiring = ko.observable(isHiring);
self.blurb = ko.observable(blurb);
self.numberOfEmployees = ko.observable(numberOfEmployees);
self.hsLocCity = ko.observable(hqLocCity);
self.hsLocCountry = ko.observable(hqLocCountry);
self.website = ko.observable(website);
self.ownership = ko.observable(ownership);
self.orgImg = ko.observable(orgImg);
}
рассказал вам, довольно некрасиво, но я не знаю, как сделать это чище, и это связывает хорошо, так что достаточно хорошо сейчас. В текущей ситуации у меня есть 3 организации, которые загружаются в наблюдаемый массив orgs. В каждом из представлений организаций я буду размещать кнопку (еще не сделали этого, нужно сначала разобраться в этом), которая займет видимую в данный момент организацию и опубликовать ее.
У меня есть оболочка запроса PUT, но я не уверен, как получить текущую организацию, которую я просматриваю из массива.
self.updateOrganization = function() {
$.ajax({
type: "PUT",
contentType: "application/json; charset=utf-8",
url: apiBaseUrl + "?userId=" + userId,
data: ko.toJSON(?????),
dataType: "json",
success: function (msg) {
alert('success');
},
error: function (err) {
alert('Error updating information, please try again!');
}
});
Есть идеи?
Вы могли бы перебрать массив, который содержит все организации и найти тот, который соответствует какой-ID? Затем вызовите ko.toJSON(). – arb
эй я только что нашел это: self.selectedOrg.subscribe (function (newValue) { alert (newValue); }, self); должен сделать трюк. Я отправлю рабочий код, если я могу заставить его работать. – ledgeJumper
любая идея, как получить .indexOf() на этом объекте? У меня есть orgId, нужно получить весь объект org из массива orgs. – ledgeJumper