markdown
# 情境
一個Grid,裡面的row是template,
按鈕除了編輯刪除,其他按鈕案出來的視窗也是template,
在template裡面還有套template,然後都是MVVM去設定事件,
在最尾端的一個表單,要做表單驗證,
有一個欄位是radio button,多選一,當選到某值時另一文字輸入框欄位就變必填
# 問題
如何在MVVM的model中套用這個特定的required驗證
# 解題過程
我原本找到去擴充model binding的binder方法的方向
https://stackoverflow.com/questions/15945755/set-tag-attribute-based-on-variable-value-with-kendo-binding/15947852#15947852
但他要做一個html元件的跟一個widget的,名字還有邏輯,沒搞太懂;
後來轉向套用validator在表單上,雖然不太MVVM,但是可解的方法,
可是這個必填欄位不知為何在執行驗證時會跳
`n[t].call is not a function`
錯誤,後來發現 **不能把validator用的物件放在你的MVVM ViewModel**,
他在執行遍歷驗證時會抓到observable的一些屬性但無法辨識(例如`_events`)然後就跳那個錯誤,
我本來以為MVVM就是你用到的東西都塞MODEL裡就對了,不過這個情境應該不是這樣放...
再來是自訂驗證規則名稱的雷,
我原本取名`PayAccountRequired`,結果竟然讓input不是required也套上required屬性,整個鬼打牆找了很久,後來把規則名稱改成`PayAccountRule`,竟然就正常了....
從來沒想到這個驗證會讓我卡好幾個小時....
完成的範例
http://jsfiddle.net/o8ym26jj/2/
沒有留言:
張貼留言