0
부트 스트랩 모달 내 사용자 데이터 세부 정보를 표시하고 싶습니다. AJAX를 사용하여 데이터를로드하고 녹아웃 매핑 플러그인을 사용하여 녹아웃 ViewModel에 바인딩합니다.녹아웃 : 데이터가 JSP에 표시되지 않습니다.
데이터가 올바르게로드되고 녹아웃 모델에 바인딩되지만 UI에서 데이터가 표시되지 않습니다. 문제가 어디에 있는지 누가 알 수 있습니까?
의 user.js
var model = new UserViewModel();
$(document).ready(function() {
ko.applyBindings(model);
});
userViewModel.js
function UserViewModel() {
var self = this;
self.userHelper = ko.observable();
self.userHelper.user = ko.observable();
self.loadUserData = function(userId) {
$.ajax({
type : "POST",
url : "/user/loadUserDetail.htm",
data: {"userId": userId},
success : function(response) {
var parsedJSON = $.parseJSON(response);
var userHelper = new UserHelper(parsedJSON);
self.userHelper = userHelper;
// correct first name is printed
console.log(userHelper.user.firstName());
$("#user-dialog").modal('show');
},
error : function(e) {
showErrorBox('Error: ' + e.status);
}
});
}
}
function UserHelper(data) {
this.user = ko.mapping.fromJS(data.user);
this.availableGroups = ko.mapping.fromJS(data.availableGroups);
this.errors = ko.observableArray(mapDictionaryToArray(data.errors));
}
user.jsp
<input type="text" class="form-control input-sm" data-bind='attr:{value: userHelper.user.firstName}' name="user.firstName" />
,174,
업데이트 :
내 코드를 업데이트하지만 데이터는 여전히 UI에 미리 보여줍니다되지 않습니다. 여기에 오류가 있습니까?
userViewModel.js
var userHelper = {
user: ko.observable(),
availableGroups: ko.observableArray([]),
errors: ko.observableArray([])
};
function mapData(data) {
userHelper.user = ko.mapping.fromJS(data.user);
userHelper.availableGroups = ko.mapping.fromJS(data.availableGroups);
userHelper.errors = ko.observableArray(mapDictionaryToArray(data.errors));
}
function UserViewModel() {
var self = this;
self.loadUserData = function(userId) {
$.ajax({
type : "POST",
url : "/user/loadUserDetail.htm",
data: {"userId": userId},
success : function(response) {
var parsedJSON = $.parseJSON(response);
mapData(parsedJSON);
console.log(userHelper.user.firstName());
registerClickListener();
$("#user-dialog").modal('show');
},
error : function(e) {
showErrorBox('Error: ' + e.status);
}
});
}
}
JSP :
self.userHelper = ko.observable();
//...
self.userHelper = userHelper; // This is wrong
//...
self.userHelper(userHelper); //This is correct
또한 사용을 변경해야합니다 :
<input type="text" class="form-control input-sm" data-bind='attr:{value: userHelper.user.familyName}' name="user.familyName" />
감사에게 그것으로 많은 새로운 JSON 값을로드 할 수 있습니다! 모범 사례 솔루션은 무엇입니까? 일부 발췌 문장을 제공 할 수 있습니까? – Tunguska
내 업데이트를 확인하십시오. 오용 된 점이 보이십니까? – Tunguska