2017-01-30 9 views
0

여러 열의 머리글에 정렬이 적용된 테이블이 있습니다.녹아웃에서 형제 이벤트 중지

하나의 열 정렬이 진행 중이고 동시에 다른 열의 정렬이 사용자에 의해 클릭되는 경우. 적절한 단락으로 작동하지 않습니다.

그래서 다른 이벤트가 진행 중일 때 정렬을 중지하고 싶습니다.

예를 들어

: 사용자는 제목의 정렬이 완료되지 않을 때까지, 다음 날짜 열 이벤트가 발생하지 않아야은 프로세스가 완료되지 않고, 동시에 사용자가 날짜 열을 클릭의로 정렬 제목 클릭했습니다.

+0

정렬이 진행 중일 때 - 애니메이션입니까, 아니면 비동기 적으로 실행되는 정렬 기능입니까? –

답변

1

보기에는 많은 논리가있어 보통 상황이 상당히 복잡해집니다. viewmodel에 클릭 핸들러를 추가하여 시작하십시오. 업데이트를 연기해야하는지 확인하는 데 사용할 수있는 관찰 가능한 isSorting을 만듭니다. 내가 다른 카테고리에 바인딩 이벤트 리스너를 생성하는 도우미 메서드를 사용하는 것이 좋습니다 것

var self = this; 

self.sort = ko.observable("Title"); 
self.isSorting = ko.observable(false); 

self.onClick = function(sortBy) { 
    if (self.isSorting()) { 
    // Queue logic 
    } else { 
    self.sort(sortBy); 
    } 
}; 

: 그것에서

는 가장 기본적인 형태입니다. 예를 들어 :

self.sortHandlerFor = function(sortBy) { 
    return self.onClick.bind(self, sortBy); 
}; 

당신과 같이 사용할 수있는 :

<a data-bind="click: sortHandlerFor('Title')"></a> 
<a data-bind="click: sortHandlerFor('StartDate')"></a> 

당신은 액티브/패시브 상태 논리에 같은 생각을 사용할 수 있습니다 : 비아 true 또는 false을 계산 반환하는 팩토리 메소드를 만들 뷰 대신 뷰 모델.

sort 작업의 대기열 논리는 비동기 코드와 밀접하게 관련되어 있습니다. 도움이 필요하면 질문을 수정하여 앱의이 부분을 추가하는 것이 좋습니다.