TFS 쿼리 작성기 웹 인터페이스와 비슷한 고급 검색 UI를 구축 중입니다. 클라이언트 쪽 구현에 녹아웃을 사용하고 특정 필수 항목을 선택하기위한 최종 유효성 검사를 제외하고는 모든 작업을 더 많거나 적게 수행해야합니다. 항목을 선택하고 항목을 선택 취소하면 유효성 검사 오류가 발생합니다. 어떤 것이 좋지만 검색 버튼을 누를 때 양식의 유효성을 검사하고 싶습니다.녹아웃 검증 - 고급 검색 사용자 인터페이스
저는 ko.validatedobservable 메소드를 사용해야 할 것이라고 확신합니다. 정확히 어떻게해야할지 모르겠습니다. 어쨌든, 나는 볼 수있는 바이올린이 있습니다 : http://jsfiddle.net/sstolp/uXBSA/ 누구든지 나를 도울 수있는 시간이나 성향이 있다면. 나는 그것을 진심으로 감사 할 것입니다.
감사합니다.
scvm.SearchLine = function() {
var self = this;
self.selectedField = ko.observable().extend({ required: true });
self.selectedOperator = ko.observable().extend({ required: true });
self.firstdate = ko.observable(new Date());
self.lastdate = ko.observable(new Date());
self.thedate = ko.observable(new Date());
return self;};
scvm.Criteria = function() {
var self = this,
lines = ko.observableArray([]),
// Put one line in by default
loadInitialData = function() {
lines.push(new scvm.SearchLine());
},
rowcount = ko.computed(function() {
return lines().length;
}),
// Operations
addLine = function() {
lines.push(new scvm.SearchLine());
},
removeLine = function (line) {
lines.remove(line);
},
search = function() {
var data = $.map(lines(), function (line) {
return line.selectedField() ? {
selectedField: line.selectedField().searchfield,
selectedOperator: line.selectedOperator().name,
} : undefined
});
alert("Send to server: " + JSON.stringify(data));
},
clear = function() {
lines.removeAll();
};
return {
lines: lines,
loadInitialData: loadInitialData,
rowcount: rowcount,
addLine: addLine,
removeLine: removeLine,
search: search,
clear: clear
};
}();
안녕하세요 f_martinez : 우리의 라인 어레이는 관찰 가능한보다는 객체를 포함하고 있기 때문에
는 또한 우리는 약간 Criteria.search 방법을 수정해야합니다. 답장과 바이올린 예제에 감사드립니다. 나는이 질문을 게시 한 후에도 계속해서 작업을 진행했으며 실제로 게시 한 것과 약간 다른 구현을 제안했습니다. 주된 차이점은 linesValid 속성을 노출하기 위해 lines 객체를 반복하는 예제가 있다는 것입니다. 또한 유효한 조건이 있지만 예제를 사용하면 검색 단추가 활성화되어 있습니다.이 단추를 클릭하면 이전에이 메시지를받지 못했지만 line.selectedField는 함수가 아니라는 오류가 나타납니다. 내 잘못을. – Steve다음은 필자의 업데이트 된 바이올린입니다 : http://jsfiddle.net/sstolp/uXBSA/ – Steve
'line'이 관찰 가능하고 실제 인터페이스에 접근하기 위해'line()'을 사용해야하기 때문에 에러가 발생합니다. 나는 "Search"를 클릭하는 것을 시험하지 않았다 - 나의 사과. 필자의 경우,'Criteria.search' 메쏘드를'line' 래핑 (unwrapping)으로 재 작성하는 것이 좋습니다. 내 대답을 업데이트했습니다. –