2013-06-12 4 views
0

Knockout JS 내의 관찰 가능 부분에 연결된 모든 익스텐더와 바인딩을 볼 수 있습니까?관찰 할 수있는 모든 익스텐더와 커스텀 바인딩보기

샘플보기 모델 :

<!--Screen 1 --> 
    <input data-bind="value:firstName"/> 

    .... 

    <!--Screen 2 --> 
    <span data-bind="editable:firstName"></span> 

A.인가 :

var viewModel = function(){ 
    var self = this; 

    self.firstName = ko.observable().extend({required: "Please enter a name", 
              logChange: "first name" }); 

    self.lastName = ko.observable().extend({ required:true}); 

} 

나는 또한 KO Validation Plugin

샘플 여러 페이지 뷰 외에 Knockout X-Editable Plugin 등 여러 가지 정의 bindingHandlers을 사용하고 있습니다 self.firstName()을 쿼리하고 모든 Extender 목록을 얻는 방법이 있습니까?

{required: "Please enter a name", logChange: "first name" }

B. 나는이 관찰에 의존 바인딩 핸들러를 모두 얻을 수 실행할 수있는 다른 쿼리가 있습니까? DOM 요소로 반환 될 수 있습니까?

기본적으로 가져온 데이터의 유효성 검사 오류를 표시하려고하지만 두 번째보기 인 경우 <span data-bind="editable"/> 아래에 추가하려고합니다.

이것은 각 입력을 개별적으로 유효성을 검사 할 때 충분히 간단하지만 ko.validation.group(viewModel)을 사용할 때 복잡해집니다. 모든 오류를 반복 할지라도 오류를 던진 원래 관찰 내용과 어떻게 관련 지을 수는 없습니다. 관찰의 모든 익스텐더를 보는 더 일반적인 방법은 없습니다 D

:

답변

1

는이 충분하지 않으면 당신은 당신이 창의력을 가지고

<span data-bind="validationMessage: myObservable"></span> 

를 사용하는 사용자 지정 바인딩이있다. KO 검증은

  • clearError는
  • 오류
  • 규칙을
  • setError

당신을 isValidating

  • 을 isValid 사용할 수있는 확장 관찰에 몇 가지 기능과 관찰 가능한 추가 모든 바인딩을 볼 수 있도록 사용자 지정 바인딩을 만들어야합니다. atta 요소에 ched. ViewModel의 View에 종속성을 갖는 것은 나쁜 습관이 아닙니다. 사용자 정의 바인딩 초기화 또는 업데이트 기능에서 당신은 allBindingsAccessor가

    ko.bindingHandlers.myBinding = { 
        init: function(element, accessor, allBindingsAccessor) { 
         var valueAttachedToCheckedBinding = ko.utils.unwrapObservable(allBindingsAccessor().checked); 
        } 
    } 
    
  • +0

    그래, 나는 validationMessage 바인딩에 대해 알고 있었다, 그러나 단지 메시지를 잡고 때 나 자신을 조작하는 나를 위해 다른 방법이 있다면 궁금 해서요 validatedObservable (유효성 검사 그룹)을 사용하여 작업합니다. 이 오류의 배열, 즉 observable 자체를 반환하면 각 오류에서 부모를 찾기 위해 호출 할 수있는 함수가 있습니까? – lyma

    +0

    아니, 안타깝게도 viewmodel의 구조를 아는 유일한 사람은 bindingcontext – Anders

    +0

    입니다. 나는 그 문제를 해결할 수있다. 감사. – lyma