Knockout.js를 사용하여 인터페이스 처리를하는 Razor 페이지로 작업하고 있습니다. 뷰 모델이 값을 변경하고 저장시 데이터베이스가 값을 올바르게 저장하는 동안 클릭하면 체크 표시가 변경되지 않습니다.Knockout.js 뷰 모델은 변경되었지만 게시 된 사이트에서는 확인 표시가 변경되지 않습니다.
나는 비슷한 질문을 연구했으며 this answer을 찾았습니다. 불행히도 Knockout click 이벤트를 true로 설정하면 Visual Studio에서 실행하는 동안 체크 표시가 시각적으로 변경 될 수 있지만 게시 된 개발 사이트에서는 표시가 변경되지 않습니다.
체크 박스
는 다음과 같이 면도기에 정의되어 있습니다 체크 박스가 knockout.js에 해당<div class="col-md-3">
<label class="checkbox-inline" for="NeedsFurtherReview">
<input id="NeedsFurtherReview" type="checkbox" data-bind="checked: $parent.NeedsFurtherReview, visible: !$parent.HasBeenProcessed(), click: $parent.MarkCheckToggled()" /> Further Review Needed
</label>
</div>
<div class="col-md-3">
<label class="checkbox-inline" for="PendingFinalization" data-bind="visible: !$parent.HasBeenProcessed()">
<input id="PendingFinalization" type="checkbox" data-bind="checked: $parent.PendingFinalization, enable: $parent.CanBeProcessed(), visible: !$parent.HasBeenProcessed(), click: $parent.MarkCheckToggled()" /> Ready for Final Processing
</label>
</div>
가 모델로보기
Self.PendingFinalization = ko.observable(pendingFinalization);
Self.CheckToggled = ko.observable(false);
Self.MarkCheckToggled = function() {
Self.CheckToggled(true);
return true;
};
이것에 대해 괴짜 그것에서 잘 작동한다는 것입니다
IE. MarkCheckToggled에서 리턴이 없었고 click 이벤트에서 $ parent.MarkCheckToggled로 호출되었을 때 실제로 실제로 IE에서 정상적으로 작동했습니다. 사실 IE는 이제 상자를 클릭 할 때 Visual Studio에서 예외를 throw하지만 작동하지 못하게하거나 게시 된 사이트에서이 오류를 시각적으로 던지지 않습니다.
Unhandled exception at line 4190, column 25 in http://localhost:26021/Scripts/knockout-3.4.0.debug.js
0x800a01b6 - JavaScript runtime error: Object doesn't support property or method 'apply'
미리 조언 해 주셔서 감사합니다. 자세한 내용을 알려 드리겠습니다. Stack Overflow에 관한 첫 번째 질문입니다.이 질문이 가능한 한 최선의 방법으로 제시되지 않는다면 미리 사과드립니다.
큰 호응을 얻었으나, 이것에 관해서는 내가 생각하기에 도움이 될 것 같군요. 이를 사용하여 문제를 해결할 수있었습니다. 함수 참조에 대한 클릭 바인딩에 대한 조언도 매우 유용합니다. 또한 Knockout이 클라이언트 측 기술임을 기억하는 조언은 서버에서 작동하지 않는 헛소리의 원인으로 인도합니다. 캐시를 없애기 위해 필요한 문제를 수정 한 후 이제는 매력이 작동합니다. 녹아웃뿐만 아니라 SO에 새로운 사람에게 인내심을 가져 주셔서 감사합니다! – Evoker