gpt4 book ai didi

javascript - knockoutjs 调用不断执行,我怎样才能只调用一次?

转载 作者:行者123 更新时间:2023-11-27 23:33:31 25 4
gpt4 key购买 nike

我有这段代码:

t._teacherOptions = ko.observable();

function getTeacherList() {
$.ajax({
type: "POST",
url: "/webservices/Service.asmx/GetTeachers",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(i) {
if (i.d) {
console.log(i.d);
return t._teacherOptions(i.d);

}
},
error: function(n) {
u(n);
}
});
}

t.TeacherOptions = ko.computed(function() {
getTeacherList();
return t._teacherOptions();
});

然后是我的 html:

<select data-bind="options: $root.TeacherOptions(), value: Id, optionsText: 'Name'"></select>

由于某种原因,打开页面后,获取教师名单的函数一直循环不停。

我能够得到我需要的结果,但循环仍在继续,我需要停止它。我在这里做错了什么吗?

最佳答案

您正在无休止地循环,因为您的 TeacherOptions (这是一个 计算)访问 _teacherOptions (因此创建了依赖项)并且因为您'在 Ajax 调用的 success 回调中重新改变 _teacherOptions 的值,TeacherOptions 将再次被评估(因为它依赖于 _teacherOptions)并再次发出 Ajax 请求。

尝试在计算之外调用getTeacherList():

t._teacherOptions = ko.observable();

function getTeacherList() {
$.ajax({
type: "POST",
url: "/webservices/Service.asmx/GetTeachers",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(i) {
if (i.d) {
console.log(i.d);
return t._teacherOptions(i.d);

}
},
error: function(n) {
u(n);
}
});
}

getTeacherList();

t.TeacherOptions = ko.computed(function() {
return t._teacherOptions();
});

参见Documentation

关于javascript - knockoutjs 调用不断执行,我怎样才能只调用一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34333725/

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