gpt4 book ai didi

javascript - Knockoutjs 映射 - 没有初始数据

转载 作者:行者123 更新时间:2023-11-29 10:49:25 24 4
gpt4 key购买 nike

我正在尝试使用 knockoutjs 映射大量复杂的数据。我正在使用揭示模块模式。

为了使对象的所有元素都可观察,我使用了映射插件。但是,我遇到了一个问题:我在任何地方都找不到使用 ko.mapping.fromJS() 的示例,其中一些初始数据映射到 viewmodel 对象,但稍后映射,之后 - 在我的例子中 - 进行了 ajax 调用并检索了一些数据。也就是说,我没有任何初始数据,因此需要初始映射充满空值、空值或默认值。

这是唯一相关的信息

Knockout JS mapping plugin without initial data / empty form

但这并不能真正解决同样的问题——或者至少,我不能让它解决同样的问题。

这是我得到的大致代码。

var viewModel = function(){
var farmyard = *** What?? ***;

var refreshData = function(){
var temp = null;
$.ajax(
// awesome server call etc
success: function(data){
temp = data;
}
);
ko.mapping.fromJS(temp, farmyard);
};

return{
farmyard: farmyard,
refreshData: refreshData
}
};

$(function(){
var vm = new viewModel();
ko.applybindings(vm);

$('#something).on('click',function(){
vm.refreshData();
});
});

那么,我的问题是,这个对象初始加载时的农场是什么?目前我不得不设置空对象来完成这项工作,对每个对象的每个元素进行手工编码,并且如前所述,映射的对象层次结构庞大而复杂,因此这并不理想。非常感谢任何帮助。

谢谢。

最佳答案

我通过将空数据模型作为 ViewBag 属性的一部分发送到 View (这是 .NET MVC)并使用名为 Ngon 的库 (https://github.com/brooklynDev/NGon) 解决了这个问题.

public ViewREsult Index()
{
var massiveDataModel = new MassiveDataModel();

ViewBag.NGon.Stuff = massiveDataModel;

return View();
}

在脚本中:

var viewModel = function(){
var farmyard = ko.mapping.fromJS(ngon.Stuff);

var refreshData = function(){
var temp = null;
$.ajax(
// awesome server call etc
success: function(data){
temp = data;
}
);
ko.mapping.fromJS(temp, farmyard);
};

return{
farmyard: farmyard,
refreshData: refreshData
}
};

$(function(){
var vm = new viewModel();
ko.applybindings(vm);

$('#something).on('click',function(){
vm.refreshData();
});
});

太忙于尝试以某种方式解决问题,看不到明显的解决方案。感谢 Tyrsius 的不同观点。

关于javascript - Knockoutjs 映射 - 没有初始数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13356939/

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