Javascript Can';t在ViewModel敲除中执行函数
我有一个这样的网格系统Javascript Can';t在ViewModel敲除中执行函数,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我有一个这样的网格系统 <div class="section table_section"> <div class="section_inner" id="divTestKoRemoteGrid"> <div class="title_wrapper" data-bind="with: Grid"> <h2 data-bind="text: TotalCount"> Prices</h2>
<div class="section table_section">
<div class="section_inner" id="divTestKoRemoteGrid">
<div class="title_wrapper" data-bind="with: Grid">
<h2 data-bind="text: TotalCount">
Prices</h2>
</div>
<div class="section_content">
<div id="product_list" data-bind="with: Grid">
<!--[if !IE]>start table_wrapper<![endif]-->
<div class="table_wrapper">
<div class="table_wrapper_inner">
<table cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<th>
No.
</th>
<th>
Tier
</th>
<th>
</th>
</tr>
<!-- ko foreach: Data -->
<tr data-bind="css: { second: $index() % 2 }">
<td data-bind="text: Id" style="width: 26px;">
</td>
<td data-bind="text: Tier" style="width: 35px;">
</td>
<td style="width: 120px;">
<div class="actions_menu">
<ul>
<li><a class="edit" href="">edit</a></li>
<li><a class="delete" href="">deny</a></li>
</ul>
</div>
</td>
</tr>
<!-- /ko -->
</tbody>
</table>
</div>
</div>
<!--[if !IE]>end table_wrapper<![endif]-->
</div>
<!-- ko with: Grid -->
<div class="pagination" data-bind="with: Page">
<span class="page_no" data-bind="text: TotalCount"></span>
<ul class="pag_list" data-bind="foreach: ko.utils.range(1, TotalPage)">
<li><a href="" data-bind="click: $parent.Goto, css:{current_page: $data == $parent.CurrentPage}">
<span><span data-bind="text: $data"></span></span></a></li>
</ul>
</div>
<!-- /ko -->
</div>
</div>
</div>
当我尝试执行GoTo函数(在ListModel中)时,浏览器找不到该函数,并且无法在click事件中绑定knockout
我试着用5天时间解决这个问题。您认为是什么问题?问题是您正在访问父级。这将使您获得页面,而不是您需要的网格。要解决此问题,请使用父母[]。它包含当前可用的所有父项,在这里,您需要使用
父项[1]
我有一把小提琴样品
另外,请查看淘汰网站上的文档,问题是您正在访问家长。这将使您获得页面,而不是您需要的网格。要解决此问题,请使用父母[]。它包含当前可用的所有父项,在这里,您需要使用
父项[1]
我有一把小提琴样品
再看一下淘汰网站上的文档我可以从您的示例代码中假设的唯一一件事是,您忘记将my声明为VAR实际上是存在的,但我忘了在这里添加。我正在编辑示例代码中唯一可以假设的是,您忘了将my声明为VAR,实际上是这样,但我忘了在这里添加。我在编辑
var my = my || {};
$(function () {
my.PriceListViewModel = (function () {
var
grid = ko.observable(),
loadGrid = function () {
my.ListModel.LoadData();
grid(my.ListModel);
};
return {
Grid: grid,
LoadGrid: loadGrid
};
})();
my.ListModel = (function () {
var
data = ko.observableArray([]),
totalCount = ko.observable(),
page = ko.observable(),
goTo = function (d) {
$.getJSON("/prices/GetByFilterViaJSON?limit=6&page=" + d, function (list) {
data(list.Data);
page(list.Page);
});
},
loadData = function () {
$.ajax({
type: 'GET',
url: '/prices/GetByFilterViaJSON',
dataType: 'json',
success: function (list) {
data(list.Data);
page(list.Page);
totalCount(list.TotalCount);
},
data: { limit: 6 },
async: false
});
};
return {
Data: data,
TotalCount: totalCount,
Page: page,
GoTo: goTo,
LoadData: loadData
};
})();
my.PageModel = (function () {
var
currentPage = ko.observable(1),
totalCount = ko.observable(1),
limit = ko.observable(),
start = ko.observable(),
nextPage = ko.observable(1),
previousPage = ko.observable(1),
totalPage = ko.observable(1),
loadData = function (pageData) {
currentPage(pageData.CurrentPage);
totalCount(pageData.TotalCount);
limit(pageData.Limit);
start(pageData.Start);
nextPage(pageData.NextPage);
previousPage(pageData.PreviousPage);
totalPage(pageData.TotalPage);
};
return {
CurrentPage: currentPage,
TotalCount: totalCount,
Limit: limit,
Start: start,
NextPage: nextPage,
PreviousPage: previousPage,
TotalPage: totalPage,
LoadData: loadData
};
})();
my.PriceListViewModel.LoadGrid();
ko.applyBindings(my.PriceListViewModel);
});