gpt4 book ai didi

javascript - 使用 ajax 调用中的数据 knockout 更新可观察数组的每个元素的属性

转载 作者:行者123 更新时间:2023-11-28 08:11:45 26 4
gpt4 key购买 nike

我有一个 ViewModel“AppViewModel”,它正在获取 JSON 数据来创建模型,属性“totalSessions”之一要使用ajax调用来获取,“模型”AppViewModel返回一个可观察的数组,我的代码运行没有任何错误,但 View 似乎没有更新。

    var jsonapparray = [];

function AppViewModel(appsdata)
{
var self = this;
var appsdata = $.parseJSON("["+ JSON.stringify(appsdata["user_of"]) + "]");

var totalSessions = 0;
var i = 0;
for (var appkey in appsdata[0]) {
console.log(appsdata[0][appkey].name);
var elem = new Object();
elem._id = appsdata[0][appkey]._id;
elem.category = appsdata[0][appkey].category;
elem.country = appsdata[0][appkey].country;
elem.name = appsdata[0][appkey].name;
elem.key = appsdata[0][appkey].key;
elem.timezone = appsdata[0][appkey].timezone;
elem.totalsessions = 000;
jsonapparray.push(elem);
updateSessionsInfo(i,elem,jsonapparray);
i++;
}

self.AppCount = i;
self.Apps = ko.observableArray(jsonapparray);

function updateSessionsInfo(i,elem,jsonapparray)
{
$.ajax({
type:"GET",
url:Domain + "/o",
data:{
"api_key":readCookie("api_key"),
"app_id":elem._id,
"method":"sessions"
},
dataType:"jsonp",
async: false,
success:function (json) {
_sessionDb = json;
var totalSessions = _.pluck(_sessionDb,"t");
jsonapparray[j].totalsessions = totalSessions[0];
}
});
}

}

最佳答案

你应该改变:

jsonapparray[j].totalsessions = totalSessions[0];

至:

jsonapparray[i].totalsessions = totalSessions[0];

但这实际上并没有帮助。更新数组中项目的属性不会触发更新。您应该使所有属性都可观察,例如:

elem.totalsessions = ko.observable(0);

然后像这样更新值:

jsonapparray[i].totalsessions(totalsessions[0]);

关于javascript - 使用 ajax 调用中的数据 knockout 更新可观察数组的每个元素的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24118127/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com