gpt4 book ai didi

javascript - 为什么我的 viewModel 在 HTML 中更新,但在 javascript 中却没有更新?

转载 作者:行者123 更新时间:2023-12-03 01:20:30 32 4
gpt4 key购买 nike

我有一个函数可以一次将行项目向上移动一行。为了简单起见,我展示了一小部分代码。我的可观察量使用 $root.cRecordID 在 HTML 中按预期显示,但在我的代码中,它们是未定义的。这是令人困惑和令人沮丧的。谁能解释一下吗?

listOrderUp: function (lid) {
// get RecordID of selected item
//viewModel.loadItemByID(lid);
console.log(lid);

OData.read(_serviceURL + "/nsLineItems(" + lid + ")?", function (response) {
viewModel.cRecordID(response.RecordID);
viewModel.cMenuID(response.MenuID);
viewModel.cEntreeID(response.EntreeID);
viewModel.cCategoryID(response.CategoryID);
viewModel.cListOrder(response.ListOrder);
});

console.log(viewModel.cRecordID());

// selected item - decrease ListOrder by 1
var putdataCurrent = {
RecordID: viewModel.cRecordID(),
MenuID: viewModel.cMenuID(),
CategoryID: viewModel.cCategoryID(),
EntreeID: viewModel.cEntreeID(),
ListOrder: viewModel.cListOrder() - 1
};

console.log(putdataCurrent);

var _requestCurrent = {
requestUri: _serviceURL + "/nsLineItems(" + viewModel.cListOrder() + ")",
method: "MERGE",
data: putdataCurrent
};

OData.request(_requestCurrent, function (data) {
});
}

这是控制台结果: enter image description here

这是我的 html 测试代码:

这显示了预期的结果,但我需要代码中的结果,以便我可以将数据保存到服务器。它如何在代码(javascript文件)中未定义但在html中正确显示?谢谢,杰夫

最佳答案

我猜OData.read(.....)是对服务器的异步调用?如果是这样,我相信在 var putDataCurrent 中设置值的代码正在对服务器的调用返回之前执行。如果您在设置可观察量调用结果的位置以及设置 putDataCurrent 的位置放置几个断点,并检查哪个断点首先被击中。如果这是问题所在,您可以将代码移至 OData.read 的“成功”回调中,或者您可以使用 promises

关于javascript - 为什么我的 viewModel 在 HTML 中更新,但在 javascript 中却没有更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51788010/

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