gpt4 book ai didi

javascript - 在 Knockout.js 中连接 AJAX 调用

转载 作者:行者123 更新时间:2023-11-30 10:26:42 24 4
gpt4 key购买 nike

如果之前有人问过这个问题,我深表歉意,我已经搜索过了,但我发现很难以搜索友好的方式表达我的问题。我无法从 knockout 文档中弄清楚,但这似乎是一个基本问题。

我有 3 个选择列表和一个 Knockout View 模型。在第一个列表中选择一个值会更新 View 模型中的一个可观察对象。然后我需要创建一个 ajax post,将该值发送到服务器并检索我放入 View 模型中的可观察数组中的值列表,这将依次更新其他 2 个列表。

我很高兴连接到可观察对象并且那部分工作正常,我的问题是如何以及在何处触发 ajax 调用。

如果我在第一个选择的更改事件上触发它,它似乎会导致竞争条件,这意味着它有时会在 View 模型更新之前被调用。我可以在不使用 observable 的情况下触发它,但这似乎不是很厉害。

如果我使用自定义绑定(bind)来检索值,它将导致进行两次 ajax 调用,并且我不能将检索放在一个函数中,因为它需要异步运行(并且它会被调用两次)。

我觉得我需要一些东西来监听可观察对象并触发 ajax 调用,而无需任何视觉元素。

如有任何帮助,我们将不胜感激。

最佳答案

触发应响应 View 模型更改而发生的事情通常通过 subscriptions 起作用在 knockout 中。

function ViewModel() {
var self = this;

self.someValue = ko.observable();
self.otherValue = ko.observable();

self.someValue.subscribe(function (newValue) {
// do something with newValue, like an Ajax request.

// assuming jQuery
$.get("your/url", {val: newValue})
.done(function (data) {
self.otherValue(data);
})
.fail(function () {
alert("could not retrieve value from server");
});
});
}

关于javascript - 在 Knockout.js 中连接 AJAX 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19268196/

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