gpt4 book ai didi

javascript - Knockout 映射初始化的最佳代码

转载 作者:行者123 更新时间:2023-11-28 01:26:04 25 4
gpt4 key购买 nike

这是我第一次使用 Knockout Mapping 插件直接从服务器的 JSON 创建 View 模型。初始数据集来自服务器,然后我每 10 秒轮询一次更改。这段代码可以工作,但我觉得它不是很 DRY。

我到处寻找更好的例子,但没有任何运气。如何避免在两个不同的地方调用 getJSON?

在我的 customer-scripts.js 文件中:

function CustomerRefresher(id) {
var viewModel;

$.getJSON('/ApiCustomer/Get/' + id, function (data) {
viewModel = ko.mapping.fromJS(data);
ko.applyBindings(viewModel);
setTimeout(refresh, 10000);
});

var refresh = function () {
$.getJSON('/ApiCustomer/Get/' + id, function (data) {
ko.mapping.fromJS(data, {}, viewModel);
});

setTimeout(refresh, 10000);
}
}

在我的 .cshtml 文件中:

$(function () {
CustomerRefresher(@Model.Id);
});

最佳答案

function CustomerRefresher(id){
var refresh = function(){
$.getJSON('/ApiCustomer/Get/' + encodeURIComponent(id), function(data){
if (typeof CustomerRefresher.viewModel !== 'undefined'){
ko.mapping.fromJS(data, {}, CustomerRefresher.viewModel);
}else{
CustomerRefresher.viewModel = ko.mapping.fromJS(data);
ko.applyBindings(CustomerRefresher.viewModel);
}
setTimeout(refresh, 10000);
});
};
refresh();
}

类似的事情? (可以使用函数本身来“缓存” View 模型)此外,example提供。

此外,FWIW,这可能更适合 codereview.SE .

关于javascript - Knockout 映射初始化的最佳代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22667621/

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