- 我创建了一个绑定到 kendo MVVM 的输入元素的变量列表。
- 我对所有输入元素进行了剑道验证(这是标准功能),检查输入是否为空。
我的 MVVM 中的对象有一个属性 IsMandatory,如下所示:
{ Name: "test", ID: 12, ... , IsMandatory: false }
验证不得尝试验证 IsMandatory 值为 false 的元素。我怎样才能做到这一点?
我知道我可以像这样将属性绑定到 MVVM 值:
<input data-bind="attr: { name: Name }" />
这会导致上述对象的实际输出如下:
<input name="test" />
但是,required
用于标准所需验证的属性是无值的,就像这样。
<input name="test" required />
因此,如果我的 MVVM 对象中的 IsMandatory 属性设置为 true,则基本上我需要创建具有必需属性的元素,如果设置为 false,则不需要创建必需属性。
{ Name: "test1", ID: 1, ... , IsMandatory: true }
{ Name: "test2", ID: 2, ... , IsMandatory: false }
{ Name: "test3", ID: 3, ... , IsMandatory: true }
<input name="test1" required />
<input name="test2" />
<input name="test3" required />
这个问题有优雅的解决方案吗?除了在每个元素的创建周围放置一个 if-else。或者是否有在我的验证中排除/包含元素的不同解决方案?
我可以想象的一种选择是创建一个自定义的必需验证,检查输入的 IsMandatory 属性是否设置为 true,然后才验证元素。但是,我找不到任何可能获得当前元素的 MVVM 对象。
...
validation: {
required: function (input) {
var observable = // Get the kendo observable from input here !!!!!
if (observable.IsMandatory) {
return input.val() != "";
}
return true;
}
},
...