淘汰赛验证立即评估负载(Knockout Validation evaluates immediat

2019-07-04 11:29发布

我使用MVC,淘汰赛,淘汰赛和验证来验证我的视图模型。

我运行到哪里了视图模型性能的验证立即在加载时射击的问题。 换句话说,“这是必须填写”我旁边的投入显示了一个用户试图改变它们的值了。

这个问题进行具体下拉列表(选择)控制发生。

我猜,这是我已经通过某种方式改变无意/访问/突变可观察到的在我的javascript代码另一部分产生了问题。 不过,我不知道如何追踪下来。

有没有办法,我能以某种方式认购或跟踪甚至火灾,导致验证在淘汰赛验证的方法吗? 我只需要知道这是为什么在事情是这样的射击。 我敢确信的isValid()函数的值是一致的假。

下面是我的HTML是如何在页面加载,不受干扰设置示例:

<select class="highlightable validationElement" name="obsstate" data-bind="value: standardAnswers.ans106_1.value" required="true">
    <option value="">-- Select -- </option>
        <option value="AK">AK</option>
        <option value="AL">AL</option>
        etc...

</select>

Answer 1:

应用绑定的视图模型后。 那么该视图模型使showAllMessagesfalse

YourViewmodelname.errors.showAllMessages(false);


Answer 2:

引用KO网页....( http://knockoutjs.com/documentation/options-binding.html )

KO会前缀一个显示文本的项目列表“中选择一个项目......”和值为undefined。 所以,如果myChosenValue保存值undefined(其可观测量默认情况下这样做),那么虚拟选项将被选中。 如果optionsCaption参数是可观察到的,则初始项目的文本将更新为可观察的价值变化。

所以,我解决它通过设置“未定义”定义属性时,见下面例子:

self.myProperty = ko.observable(undefined).extend({
    required :  {"Field Required"}
});

希望这可以帮助...



Answer 3:

我想通了,这个问题我自己。

剃刀引擎模板化的选择选项,再后来的结合所选择的元件以敲除的值之间存在的问题。

尽管有在选择框中没有用户输入的值,默认值时,“ - 选择 - ”实际上包含的值。 就我而言,这是一个空字符串。 因此,当我申请淘汰赛绑定,我的ViewModel财产被“更新”与空字符串值,因此确认解雇。

为了解决这个问题在我的情况下,我把我的模型的默认值是一个空字符串。 因此,当被施加的绑定,没有valueHasMutated事件对基因敲除可观察到的发射,因此没有验证。



文章来源: Knockout Validation evaluates immediately on load