【发布时间】:2014-02-01 04:05:04
【问题描述】:
我在下面有这个 .net 类
public class JobDetailsDTO
{
public string JobName { get; set; }
public string CompanyName { get; set; }
public String[] IndustryName;
}
我正在尝试将其映射到 Knockout JS 模型,我的嵌套集合似乎不起作用,我在 JS 模型中做错了什么?
var jobViewModel = {
jobDetailsDTO: ko.observableArray(),
currentPage: ko.observable(-1),
industries: ko.observableArray(industries),
contentLoadTriggered: false
};
这是我的数据绑定
<div id="jobcontent-wrapper" data-bind="foreach: jobDetailsDTO">
<label data-bind="text: JobName"></label>
<span class="jobsize" data-bind="text: CompanyName"> </span>
<div class="col-md-12" data-bind="foreach: industries">
<span class="glyphicon glyphicon-heart"></span>
Industry
<span class="jobsize" data-bind="text: IndustryName"></span>
</div>
</div>
<div id="jobcontent-wrapper" data-bind="foreach: jobDetailsDTO">
<label data-bind="text: JobName"></label>
<span class="jobsize" data-bind="text: CompanyName"> </span>
<div class="col-md-12" data-bind="foreach: industries">
<span class="glyphicon glyphicon-heart"></span>
Industry
<span class="jobsize" data-bind="text: IndustryName"></span>
</div>
</div>
这是我获取数据的ajax
function getData(pageNumber) {
if (jobViewModel.currentPage() != pageNumber) {
$.ajax({
url: "/api/jobservice/getjob",
type: "get",
contentType: "application/json",
data: { id: pageNumber }
}).done(function (data) {
if (data.length > 0) {
for (i = 0; i < data.length; i++) {
jobViewModel.jobDetailsDTO.push(data[i]);
}
}
});
}
}
这是我从控制器获得的 JSOn
[{"IndustryName":["RIE","XSL","FWTI","QPCAP","PPGPUU"],"JobName":"KLLFBN","CompanyName":"CKI"},{" IndustryName":["SAF","JIF","MVFG","RPAIP","ALAUKM"],"JobName":"ROULJS","CompanyName":"LXN"},{"IndustryName":["IIH ","PEM","TINE","EOAXF","ZYJHKK"],"JobName":"ISUYFV","CompanyName":"VZR"}]
当我在我的视图模型中禁用此行时,它可以提取数据,但是当我启用此行时,它不会在那之后执行任何 JS。我的假设是我定义子集合的方式有问题。我在 Firefox firebug 的控制台上看不到任何错误消息
var jobViewModel = {
jobDetailsDTO: ko.observableArray(),
currentPage: ko.observable(-1),
industries: ko.observableArray(industries), ///this line
contentLoadTriggered: false
};
【问题讨论】:
-
可以添加控制器代码吗?
-
您在浏览器控制台中是否遇到任何错误?
jobDetailsDTO在jobViewModel中是否有industries的列表,确保视图模型jobViewModel中的jobDetailsDTO有JobName、CompanyName和industries的列表 -
您需要更具体一些,“xyz 看起来好像不起作用”有点太含糊了。帮助我们重现此问题(仅使用相关代码),告诉我们您遇到了什么具体错误以及在哪里等。
-
@Jeroen 更新了一些细节,我的猜测是正在定义的子集合在 KO js 库中失败。
标签: c# javascript jquery asp.net-mvc knockout.js