我想與Knockout.validation一起使用Knockout.mapping來創建一個簡單的驗證視圖模型。我碰到函數,並認爲這將適合我的需要,但似乎options.parent屬性沒有設置爲我所期望的:傳遞給創建的選項有無效的父項?
這是我正在使用的基本代碼或你可以看到一個JSFiddle。
var o = {
test: {
value: "bob",
validation: "{ required: true; }"
}
};
var mapping = {
'value': {
create: function (options) {
console.log(options.parent === o.test);
}
}
};
var vm = ko.mapping.fromJS(o, mapping);
我做錯了什麼,或者這是一個錯誤?我的最終目的是我想打電話給大意如下的創造的東西:
create: function(options) {
var result = ko.mapping.fromJS(options.data);
if(options.parent.validation !== undefined) {
result.extend(options.parent.validation);
}
return result;
}
如果這是剛剛打破任何人能想到的解決該問題的任何比較簡單的方法呢?我到目前爲止唯一提出的解決方案是遞歸屬性搜索,以手動擴展observables,這感覺像是很多不必要的複雜性。
我嘗試調試之前,我開始,以驗證我已經添加了以下行'console.log('驗證:'+ options.parent.validation);'哪些日誌'未定義' – Ian
它的原因是option.parent映射對象不是原始數據。並且它們按照他們聲明的相同順序映射它們,在驗證之前定義了值 – Anders
您是否嘗試過我的小提琴? –