두 개의 JSON 문자열을 비교하려면 밑줄 isEqual을 사용하는 질문이 있습니다. 현재 백본에서 응용 프로그램을 만들었으며 _.isEqual (savedModel.toJSON(), changedModel.toJSON())을 사용하여 페이지에서 모델이 변경되었는지 확인하고 "변경 사항을 저장하지 않았습니다. 너 저장하고 싶어? " 사용자가 멀리 이동할 때 타이어가 있으면 대화 상자가 나타납니다.밑줄 isEqual 및 JSON
아무 것도하지 않았거나 변경 사항을 저장했지만 아무 이유없이 대화 상자가 표시됩니다. 디버깅이 나를 미치게 만듭니다.
JSON이 JSON에서 개체의 순서를 보증하지 않으며 isEqual이이 사례를 제대로 처리하지 못하기 때문에 이것이 가능한가요? 따라서 모델이 동일하더라도 JSON의 일부 속성이 다를 수 있으며 false를 반환합니다.
의사 코드 : backbone.toJSON()에 의해 사용되는 함수의 체인 후
//when entering the page the original model is cloned, when user does changes to the
//page, the model is cloned again
var savedModel = currentModel.clone().toJSON();
//when the user tries to navigate away from the page
if(_.isEqual(savedModel, model.toJSON()){
showSavePromptDialog();
}
살펴이 http://stackoverflow.com/questions/1068834/object-comparison-in-javascript –
기록을 위해,'Backbone.Model.toJSON()'리턴'attributes' 되세요 속성은'JSON' 문자열이 아닙니다. [hasChanged] (http://backbonejs.org/#Model-hasChanged)를 사용할 수없는 이유가 있습니까? – j03w