가장 좋은 방법은 무엇입니까? 그러나 http://knockoutjs.com/documentation/computedObservables.html에는 "속성이 계산 된 관찰 가능인지 결정"이라는 섹션이 있습니다. 이 속성이 계산 된 관찰 가능 여부를 확인하기 위해 isComputed
을 사용했습니다.KnockoutJS : 서버에 데이터를 전달하기 전에 계산 된 관측 값을 제외하십시오.
값을 내 서버에 전달하기 전에 계산 된 관찰 가능 항목을 self.formItems()
에서 제외/제거하고 싶습니다.
여기는 데이터를 서버로 다시 보내는 AJAX 요청 코드의 일부입니다.
for (var prop in self.formItems()) {
// console.log(ko.isComputed(self.formItems()[prop].isRadio)); //true (because this is computed)
// console.log(ko.isComputed(self.formItems()[prop].field_label)); //false (because this is not a computed element)
for(var form_prop in self.formItems()[prop]) {
// console.log(form_prop+': '+ko.isComputed(self.formItems()[prop][form_prop]));
if(self.formItems()[prop].hasOwnProperty(form_prop) && !ko.isComputed(self.formItems()[prop][form_prop])) {
// result_no_computed_observables[prop][form_prop] = ko.toJS(self.formItems()[prop][form_prop]);
console.log(self.formItems()[prop][form_prop]);
}
// ko.cleanNode(self.formItems()[prop][form_prop])
}
}
$.ajax({
'type': 'POST',
'url': appUrl+'/editors/saveform/'+memberListId+'.json',
'cache': false,
'dataType': 'json',
'contentType': 'application/json',
'data': ko.toJSON({
'id': theFormDetails.id(),
'name': theFormDetails.name(),
'description': theFormDetails.description(),
'success_text': theFormDetails.success_text(),
'success_redirect': theFormDetails.success_redirect(),
'form_elements': self.formItems() /* <--- I would like to remove computed observables from this*/
}),
'success': function(result) {
alert('success!!!');
},
'statusCode': {
403: function() {
alert("Your session has probably expired. Please login again.");
window.location = appUrl+"https://stackoverflow.com/users/login";
}
}
});
아이디어가 있으십니까?
감사합니다.
[매핑 플러그인] (http://knockoutjs.com/documentation/plugins-mapping.html)을 확인 했습니까? 모델을 다시 원시 JSON으로 변환하려면'ko.mapping.toJS()'를 호출하면 모든 종류의 동작을 제어 할 수 있습니다. –
@MikeChristensen 나는 console.log (ko.mapping.toJS (self.formItems()))'를 시도해 보았습니다. 그러나이 문제로 어떻게 문제를 해결할 수 있는지 보지 못했습니다. 죄송합니다. – wenbert
매핑 플러그인을로드합니까? –