2014-12-03 3 views
0

나는 link을 따라 유효성 검사를 만듭니다.녹아웃 유효성 검사를 사용하는 방법

그러나이 코드는 확장 방법을 이해하지 못합니다.

breeze 쿼리를 호출하여 얻은 레코드로 내 관찰 가능 항목에 데이터를로드합니다.

나는

dataObsArray= ko.observableArray() 

datacontext.getData(id,dataObsArray) 
        .then(function() { 

      // some logic 


}) 
     .fail("Data not found"); 

그럼 난 내가이기 때문에 방법을 확장 을 사용하는 방법을 이해 해달라고 그래서

<tbody data-bind="with: dataObsArraay"> 
      <tr> 
       <td>name</td> 
       <td> <input data-bind=" value: Name" ></td> 
       <td> <input data-bind=" value: Age" ></td> 

      </tr> 
</tbody> 

아래로 내보기에이 OBS 배열을 바인딩 아래 방식으로 데이터를로드 내 관측 가능한 배열의 속성으로 내 뷰를 바인딩하는 것만으로.

안내해주세요.

+0

잘보기 모델에는 이름, 나이 등의 엔터티가있는 기능이 있습니까? 거기에'.extend ({// logic here}) '를 사용해야 할 경우. –

+0

내가 녹아웃 방식으로 어떤 대답을 게시하는 데 도움이 될 수 있지만 바람에 대한 단서가 없다. –

답변

0

당신은

function person(name, age) { 
    this.name = ko.observable(name).extend({ minLength: 2, maxLength: 10 }); 
    this.age = ko.observable(age).extend({ min: 18, max: 99 }); 
} 

var data = [], 
    people = ko.observableArray(); 

datacontext.getData(id, data) 
    .then(function (data) { 
     for (i = 0; i < data.length; i++) { 
      people.push(new person(data.Name, data.Age)); 
     } 
    }) 
    .fail("Data not found"); 


<tbody data-bind="foreach: people"> 
    <tr> 
     <td>name</td> 
     <td> <input data-bind=" value: name" ></td> 
     <td> <input data-bind=" value: age" ></td> 
    </tr> 
</tbody> 
1

breeze validation를 사용하는 대신에 녹아웃 확장을 통해 UI 코드에서 유효성 검사 논리를 넣어 고려하여 데이터에 대한 모델, 예컨대을 : 만들어야합니다. breeze 유효성 검사를 사용하면 규칙이 항상 평가되고 유효성 검사를 위해 엔티티에 추가 모델을 만들지 않아도됩니다.

다음은 breeze에 내장 된 유효성 검사기 중 하나 인 stringLength 유효성 검사기를 사용한 예제입니다.

// make a reusable validator 
var myRequiredValidator = breeze.Validator.makeRegExpValidator(
    "myRequiredValidator", 
    /\S/, 
    "The %displayName% '%value%' cannot be blank or entirely whitespace"); 

// register it with the breeze Validator class. 
breeze.Validator.register(myRequiredValidator); 

// add the validator to the Name property... 
var entityType = entityManager.metadataStore.getEntityType('????'), 
    nameProperty = entityType.getProperty('Name'); 
nameProperty.validators.push(nameLengthValidator); 

여기 정규식 유효성 검사기를 만들기위한 documentation의 :

var entityType = entityManager.metadataStore.getEntityType('????'), 
    nameProperty = entityType.getProperty('Name'), 
    nameLengthValidator = breeze.Validator.stringLength({ maxLength: 10, minLength: 2 }); 
nameProperty.validators.push(nameLengthValidator); 

여기에 공백 전용 값을 허용하지 않는 문자열에 대한 사용자 지정에 필요한 검증의 예입니다.

또한 사용자 정의 유효성 검사기를 섹션을 적는다 에 대한 드리려고 모습에 대한 추가 정보를 위해 breeze docs을 확인 validators- 사용자 정의 쓸 수 있습니다.

+0

이것에 대한 좋은 예가 있습니까? 매우 도움이 될 것입니다 – Happy

+0

입력 상자에 공백을 사용하면 어떤 종류의 유효성 검사가 사용됩니까? 엔티티에 [Required] 속성을 넣었지 만 entityAspect.hasValidationErrors를 false로 저장하려고하면 ... 사용자에게 공백 만 남기고 싶습니다. – Happy

+0

http://stackoverflow.com/questions/23478929/how-to-make -the-breezejs-required-validator-allow-empty-strings –