Kendo UI MVVM 自訂Validator規則的問題 | Kendo UI MVVM custom required Validator problem
情境
一個 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,竟然就正常了….
從來沒想到這個驗證會讓我卡好幾個小時….