1
我有以下類驗證名稱並且不讓用戶輸入空名稱。有了它,我可以獲得有效的值,並在輸入無效時通知用戶(保留最後的良好值)。可重複使用的屬性驗證與敲除
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: @
我想使相同的功能更加可重用。有沒有辦法擴展ko.observable對象來添加'lastInvalid'和'attempt'方法?
喜歡的東西:
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 2013-04-23 13:30:22