사용자 정보를 편집하기위한 대화 상자로 사용자 그리드 기능을 구축하려고합니다.유효성 검사 후에 만 ViewModel을 업데이트하는 방법
var userVM=function(nm){
this.firstname=ko.observable(nm);
this.EditUser=function(u){
selectedUser(u);
$("#dialog").dialog();
}
};
var users=ko.observableArray([new userVM('Sholmo'),new userVM('Ahmed')]) ;
var selectedUser=ko.observable();
var validate=function(){
if($('[name="firstname"]').val()==''){
alert('must enter name');
//how prevent model updating?
}
}
ko.applyBindings();
내 문제는 내가 단지 후에 사용자 정보를 업데이트, (버튼을 클릭하고 검증이 전달된다 "저장"할 것입니다 : 여기
<!DOCTYPE html>
<html>
<head>
<script src="http://cloud.github.com/downloads/SteveSanderson/knockout/knockout- 2.1.0.js"></script>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css" rel ="stylesheet" type="text/css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"> </script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
users:<hr/>
<div data-bind="foreach:users">
<div><span data-bind="text:firstname"></span> <a href="#" data- bind="click:EditUser">edit</a></div><hr>
</div>
<div id="dialog" style="display:none" data-bind="with:selectedUser">
<input type="text" data-bind="value:firstname" name="firstname"/>
<button data-bind="click:validate">save</button>
</div>
</body>
</html>
내 JS입니다 : 여기 내 HTML입니다 입력 된 텍스트가 변경된 후 사용자 이름이 즉시 업데이트되었습니다.) 여기에 jsbin :
http://jsbin.com/epocov/1/edit
고마워,하지만 어떤 이유에서 나는 계산 된 {read : wirte :}를 매개 변수로 넣으려고 할 때 컴파일 오류가 계속 발생하며 그 이유가 KO 버전 일 수 있습니까? – happyZZR1400
@ happyZZR1400 : 네, 그럴 수도 있습니다. 계산은 비교적 새로운 것입니다. 이전 버전을 사용하고 있습니까? – MichaelS