gpt4 book ai didi

javascript - 创建新函数在 Javascript 和 Knockout 中返回空

转载 作者:行者123 更新时间:2023-11-28 18:15:00 25 4
gpt4 key购买 nike

我有简单的 knockout View 模型:

function HumanViewModel(humanViewModel) {
if (humanViewModel=== undefined || humanViewModel=== null) {
humanViewModel= {};
}

var self = this;

var Id = humanViewModel.Id || '';
var Name = humanViewModel.Name || '';
}

我正在从服务器获取一些 json 数据,以填充此模型,成功的情况如下:

 var result = [];
for (var i = 0; i < receivedData.length; i++) {
var vm = new HumanViewModel({ Id: receivedData[i].Id, Name: receivedData[i].Name });
result.push(vm);
}
self.Humans.push.apply(self.Humans, result);

问题出在这里:var vm = new HumanViewModel({ Id: returnedData[i].Id, Name: returnedData[i].Name });。变量 vm 包含 HumanViewModel,但此 View 模型不包含 IdName,它什么也不包含;

但是,当我查看调试器时,HumanViewModel 内部一切正常,但最终 vm 不包含任何内容。

我不知道数据在哪里丢失。我该如何解决这个问题?

最佳答案

您不应将 ID 和名称存储在变量中,而应将其保存在函数上下文中。

以下代码应该可以工作:

function HumanViewModel(humanViewModel) {
if (humanViewModel=== undefined || humanViewModel=== null) {
humanViewModel= {};
}

var self = this;

this.Id = humanViewModel.Id || '';
this.Name = humanViewModel.Name || '';
}

每当您调用new HumanViewModel时,您都会得到一个HumanViewModel希望ID和名称,因为您使用this设置它们,它引用此范围内的HumanViewModel。

关于javascript - 创建新函数在 Javascript 和 Knockout 中返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40870549/

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