KnockoutJS 代码没有输出任何东西,但没有错误
KnockoutJS code not outputting anything, but no error
我有这个 Knockout JavaScript 代码...
var bikesUri = '/api/bikes/';
function ajaxHelper(uri, method, data) {
self.error(''); // Clear error message
return $.ajax({
type: method,
url: uri,
dataType: 'json',
contentType: 'application/json',
data: data ? JSON.stringify(data) : null
}).fail(function (jqXHR, textStatus, errorThrown) {
self.error(errorThrown);
});
}
self.getBikeDetails = function (item) {
ajaxHelper(bikesUri + item.Index, 'GET').done(function (data) {
self.detail(data);
});
}
还有这个HTML..
<!-- ko if:detail() -->
<div class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">Bike Specifics</h2>
</div>
<table class="table table-striped">
<tr><td>Bike Name</td><td data-bind="text: detail().CycleName"></td></tr>
<tr><td>Manufacturer</td><td data-bind="text: detail().Manufacturer"></td></tr>
<tr><td>Shop Category</td><td data-bind="text: detail().Category"></td></tr>
<tr><td>Retail Price</td><td data-bind="text: detail().RRP"></td></tr>
<tr><td>Our Price</td><td data-bind="text: detail().OurPrice"></td></tr>
<tr><td>Stock Level</td><td data-bind="text: detail().Stock"></td></tr>
</table>
</div>
<!-- /ko -->
和这个数据传输对象。
public class BikeDetailsDTO
{
public int Index { get; set; } // ID
public string CycleName { get; set; }
public string Category { get; set; } // Pulled from Category Maps
public string Manufacturer { get; set; }
public double OurPrice { get; set; } // pulled from suppliers
public double RRP { get; set; } //pulled from suppliers
public int Stock { get; set; } // pulled from suppliers
}
API 完美运行。当您通过浏览器访问 API 时,它 returns 正是我想要它做的。Return 通过 ID 找到相关的自行车。太棒了。
当我去访问界面打开的视图时,我什么也得不到。没有错误,当我单击“显示详细信息”按钮执行 "getBikeDetails" 时,它显示 table,但没有数据……什么都没有。 API 的所有其他部分都非常好,除了这段代码和它让我发疯之外!!!!!
任何人都可以对此有所了解,因为我真的看不到它..
像这样简单修改您的视图以使其工作使用 with
并删除无容器
<div class="panel panel-default" data-bind="with:detail">
<div class="panel-heading">
<h2 class="panel-title">Bike Specifics</h2>
</div>
<table class="table table-striped" data-bind="foreach:$data">
<tr>
<td>Bike Name</td>
<td data-bind="text:CycleName"></td>
</tr>
<tr>
<td>Manufacturer</td>
<td data-bind="text:Manufacturer"></td>
</tr>
</table>
</div>
示例工作 fiddle here 你可以使用嵌套 div(如果没问题的话)
Containerless 有帮助,因为您已将 class 应用于 div 检查 fiddle 使用 containerless here
我有这个 Knockout JavaScript 代码...
var bikesUri = '/api/bikes/';
function ajaxHelper(uri, method, data) {
self.error(''); // Clear error message
return $.ajax({
type: method,
url: uri,
dataType: 'json',
contentType: 'application/json',
data: data ? JSON.stringify(data) : null
}).fail(function (jqXHR, textStatus, errorThrown) {
self.error(errorThrown);
});
}
self.getBikeDetails = function (item) {
ajaxHelper(bikesUri + item.Index, 'GET').done(function (data) {
self.detail(data);
});
}
还有这个HTML..
<!-- ko if:detail() -->
<div class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">Bike Specifics</h2>
</div>
<table class="table table-striped">
<tr><td>Bike Name</td><td data-bind="text: detail().CycleName"></td></tr>
<tr><td>Manufacturer</td><td data-bind="text: detail().Manufacturer"></td></tr>
<tr><td>Shop Category</td><td data-bind="text: detail().Category"></td></tr>
<tr><td>Retail Price</td><td data-bind="text: detail().RRP"></td></tr>
<tr><td>Our Price</td><td data-bind="text: detail().OurPrice"></td></tr>
<tr><td>Stock Level</td><td data-bind="text: detail().Stock"></td></tr>
</table>
</div>
<!-- /ko -->
和这个数据传输对象。
public class BikeDetailsDTO
{
public int Index { get; set; } // ID
public string CycleName { get; set; }
public string Category { get; set; } // Pulled from Category Maps
public string Manufacturer { get; set; }
public double OurPrice { get; set; } // pulled from suppliers
public double RRP { get; set; } //pulled from suppliers
public int Stock { get; set; } // pulled from suppliers
}
API 完美运行。当您通过浏览器访问 API 时,它 returns 正是我想要它做的。Return 通过 ID 找到相关的自行车。太棒了。
当我去访问界面打开的视图时,我什么也得不到。没有错误,当我单击“显示详细信息”按钮执行 "getBikeDetails" 时,它显示 table,但没有数据……什么都没有。 API 的所有其他部分都非常好,除了这段代码和它让我发疯之外!!!!!
任何人都可以对此有所了解,因为我真的看不到它..
像这样简单修改您的视图以使其工作使用 with
并删除无容器
<div class="panel panel-default" data-bind="with:detail">
<div class="panel-heading">
<h2 class="panel-title">Bike Specifics</h2>
</div>
<table class="table table-striped" data-bind="foreach:$data">
<tr>
<td>Bike Name</td>
<td data-bind="text:CycleName"></td>
</tr>
<tr>
<td>Manufacturer</td>
<td data-bind="text:Manufacturer"></td>
</tr>
</table>
</div>
示例工作 fiddle here 你可以使用嵌套 div(如果没问题的话)
Containerless 有帮助,因为您已将 class 应用于 div 检查 fiddle 使用 containerless here