gpt4 book ai didi

javascript - 揭示模块模式在 Knockout 中设置模型的新实例

转载 作者:行者123 更新时间:2023-11-30 13:14:49 25 4
gpt4 key购买 nike

我有 MVVM 和类似的模型;

var my = my || {};

$(function () {

my.ListModel = (function () {
var
data = ko.observableArray([]),
totalCount = ko.observable(),
page = ko.observable(),
limit = ko.observable(),
goTo = function (d) {
$.getJSON("/prices/GetByFilterViaJSON", { limit: limit, page: d }, function (list) {
data(list.Data);
page(list.Page);
});
},
loadData = function (url) {
$.ajax({
type: 'GET',
url: url,
dataType: 'json',
success: function (list) {
data(list.Data);
page(list.Page);
totalCount(list.TotalCount);
},
data: { limit: limit },
async: false
});
};
return {
Data: data,
TotalCount: totalCount,
Page: page,
Limit: limit,
GoTo: goTo,
LoadData: loadData
};
})();

my.PriceListViewModel = (function () {

var
grid1 = ko.observable(),
grid2 = ko.observable(),
loadGrid = function () {
grid1(my.ListModdel);
grid1().Limit(5);
grid1().LoadData('/prices/GetByFilterViaJSON');

grid2(my.ListModel);
grid2().Limit(3);
grid2().LoadData('/prices/GetByUserViaJSON');
};
return {
Grid1: grid1,
Grid2: grid2,
LoadGrid: loadGrid
};
})();

my.PriceListViewModel.LoadGrid();
ko.applyBindings(my.PriceListViewModel);
});

我对他们有意见。如您所见,当触发 LoadData(在 PriceListViewModel 中)时,Grid1 与 Grid2 具有相同的值。问题是什么,我该如何解决?

最佳答案

您应该使用 new 来实例化 ListModels:

var my = my || {};

$(function () {

my.ListModel = function () {
var
data = ko.observableArray([]),
totalCount = ko.observable(),
page = ko.observable(),
limit = ko.observable(),
goTo = function (d) {
$.getJSON("/prices/GetByFilterViaJSON", { limit: limit, page: d }, function (list) {
data(list.Data);
page(list.Page);
});
},
loadData = function (url) {
$.ajax({
type: 'GET',
url: url,
dataType: 'json',
success: function (list) {
data(list.Data);
page(list.Page);
totalCount(list.TotalCount);
},
data: { limit: limit },
async: false
});

return {
Data: data,
TotalCount: totalCount,
Page: page,
Limit: limit,
LoadData: loadData
};
};

my.PriceListViewModel = (function () {

var
grid1 = ko.observable(),
grid2 = ko.observable(),
loadGrid = function () {
grid1(new my.ListModel());
grid1().Limit(5);
grid1().LoadData('/prices/GetByFilterViaJSON');

grid2(new my.ListModel());
grid2().Limit(3);
grid2().LoadData('/prices/GetByUserViaJSON');
};
return {
Grid1: grid1,
Grid2: grid2,
LoadGrid: loadGrid
};
})();

my.PriceListViewModel.LoadGrid();
ko.applyBindings(my.PriceListViewModel);
});

关于javascript - 揭示模块模式在 Knockout 中设置模型的新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12397559/

25 4 0
文章推荐: c# - WPF 应用程序的当前上下文中不存在名称 'InitializeComponent'
文章推荐: ios - 在 swift 中分享单个 gif
文章推荐: c# - 通过 Selenium Webdriver 包含的文本选择一个元素
文章推荐: javascript - Div 根据