데이터보기 모델의 녹아웃 코드를 볼 수있는 MVC 4 단일 페이지 응용 프로그램이 있습니다. 보기에서 foreach를 수행하고 루프를 통과 할 때마다 점을 볼 수 있지만 데이터가 표시되지 않습니다. 그것은 관찰 가능한 배열에 50 개의 원소가 있지만 각각에 데이터가없는 것처럼 보입니다. 그러나 getJson 호출을 단계별로 수행하면 json 형식으로 데이터를 볼 수 있습니다. 뭐가 잘못 되었 니? 여기 단일 페이지 응용 프로그램 데이터가보기에 표시되지 않음
는<section>
<h2 class="page-title" data-bind="text: title"></h2>
<br /> <br /> <br />
<ul data-bind="foreach: allCertificates">
<li>
<span data-bind="text: UserName"></span>
<span data-bind="text: StatusCode"></span>
</li>
</ul>
</section>
내 caapproval.js 코드 - 내 caapproval.html보기입니다 뷰 모델 코드 - 첫째로, 나는 당신이 observableArray에 결과를 밀어하려고 생각
define(['services/logger'], function (logger) {
var Certificate = function (ClientID, RequestDate, UserName, StatusDescription, StatusCode, StatusDesc, CEOUserName) {
var self = this;
self.ClientID = ko.observable(ClientID);
self.RequestDate = ko.observable(RequestDate);
self.UserName = ko.observable(UserName);
self.StatusDescription = ko.observable(StatusDescription);
self.StatusCode = ko.observable(StatusCode);
self.StatusDesc = ko.observable(StatusDesc);
self.CEOUserName = ko.observable(CEOUserName);
};
var allCertificates = ko.observableArray();
var vm = {
allCertificates: allCertificates,
activate: activate,
title: 'Certificates'
};
return vm;
function getallCertificates() {
$.getJSON('/api/caapproval', function (data) {
allCertificates([]);
var temp = allCertificates();
data.forEach(function (p) {
var certificate = new Certificate(p.ClientID, p.RequestDate, p.UserName, p.StatusDescription, p.StatusCode, p.StatusDesc, p.CEOUserName);
temp.push(certificate);
});
allCertificates.valueHasMutated();
return allCertificates();
});
}
//#region Internal Methods
function activate() {
logger.log('CA Approval View Activated!!', null, 'CA Approval', true);
return getallCertificates();
}
//#endregion
});
뷰 모델 코드를 변경했지만 여전히 동일한 문제가 있습니다. 데이터가 보이지 않습니다. 그런 다음 View 코드를 Fiddle에서 보낸 것으로 변경했으며 '라우터가 정의되지 않았습니다.'오류가 발생했습니다. – Chris
라우터가 정의되지 않았지만 위의 코드에 나와 있지 않습니다. 어디서든 듀란덜 라우터를 언급하지만 결코 정의하지 마십시오. –
문제점을 발견했습니다. 내 원래 코드 - "return allCertificates();"에서 데이터가 allCertificates observable 배열로 푸시되고 있지 않습니다. 수정 된 코드는 "return allCertificates (data);"입니다. 또한 kadumel의 certificateModel 변수를 추가하고 내 웹 API에서 반환 된 필드 이름과 일치해야합니다 (대소 문자를 구분합니다). 나는 또한 뷰 모델 코드에서 내 모델을 분리했다. 감사합니다 kadumel. 당신은 나를 올바른 길로 가게했습니다! – Chris