이름을 확인하고 사용자가 빈 이름을 넣을 수 없도록하는 다음 클래스가 있습니다. 그것으로 유효한 값을 얻을 수 있고 입력이 유효하지 않은 경우 사용자에게 알릴 수 있습니다 (마지막 좋은 값 유지).녹아웃을 사용한 재사용 가능한 속성 검증
class @Person
constructor: (name) ->
@name = ko.observable name
@nameLastInvalid = ko.observable false
@nameAttempt = ko.computed
read: @name
write: (value) =>
if value.length > 0
@name value
@nameLastInvalid false
else
@nameLastInvalid true
owner: @
같은 기능을 더 재사용 가능하게 만들고 싶습니다. 'lastInvalid'및 'attempt'메소드를 추가하기 위해 ko.observable 객체를 확장하는 방법이 있습니까? 같은
뭔가 : 다음
class @Person
constructor: (name) ->
@name = ko.observable(name).extend({ required: true })
그리고 할 수있을 :
person.name()
person.name().lastInvalid()
person.name().attempt()
AFAIK knockout-validation이 방법을 작동하지 않습니다. 유효하지 않은 값을 넣은 다음 유효한지 여부를 알려줍니다.
는 업데이트 :
나는 다음과 같은 확장을 추가하지만 (나는 name.attempt이 정의되지 얻을) 당신 익스텐더는 편견이 당신 때문에 작동하지 않습니다
ko.extenders.required = (target, option) ->
target.lastInvalid = ko.observable false
target.attempt = ko.computed ->
read: target
write: (value) ->
if value.length > 0
target value
target.lastInvalid false
else
target.lastInvalid true
target
오, 얼마나 많은 시간을 낭비했는지 -> – Manuel