Durandal / knockout validationIcon显示页面刷新后

时间:2014-10-09 12:09:37

标签: javascript jquery knockout.js durandal

在我的Durandal应用程序中,我已经使用这样的验证定义了一个属性:

inputObject.name.extend({ maxLength: 50 });

然后我在视图中绑定:

<input type="text" class="form-control" id="inputName" data-bind="value: crop().name" placeholder="Naam" />

当我第一次加载此视图时,验证按预期工作,当我关闭视图(对话框)并重新打开时,一切仍然按预期工作: enter image description here

但是当用户刷新页面时出现问题。 输入字段显示其有效(无背景颜色),但验证图标仍在显示。

enter image description here

奇怪的是validation.group没有显示错误:

var errors = ko.validation.group(crop(), { deep: true });
// errors has no entry's

关闭并重新打开视图或执行另一个刷新/关闭浏览器等没有任何影响。此外,如果我输入无效(超过50个字符),输入字段将改变颜色:正如预期的那样!只有没有验证消息。所以验证仍然有效..只是图标似乎卡住/失去了它的绑定。

enter image description here

摆脱挂起验证图标的唯一方法似乎是导航到不同的页面(childroute),然后导航回来。验证将按预期工作,包括显示/隐藏图标。

enter image description here

更新

我不是在嘲笑我的观点。同样奇怪的是,只导航到第一条路线并返回修复问题。如果我导航到任何其他路线并返回,则验证仍然会中断。

    var childRouter = router.createChildRouter()
    .makeRelative({
        moduleId: 'viewmodels/backgroundlist',
        route: 'viewmodels/backgroundlist',
        fromParent: true
    }).map([
        { route: 'pst', moduleId: 'pst/pst', title: 'mddl', type: 'backgroundlist', nav: true },
        { route: 'ast', moduleId: 'ast/ast', title: 'wzs', type: 'backgroundlist', nav: true },
        { route: 'crp', moduleId: 'crp/crp', title: 'gws', type: 'backgroundlist', nav: true },
        { route: 'att', moduleId: 'att/att', title: 'tld', type: 'backgroundlist', nav: true },
        { route: 'cra', moduleId: 'cra/cra', title: 'gwt', type: 'backgroundlist', nav: true },
        { route: 'vrt', moduleId: 'vrt/vrt', title: 'ran', type: 'backgroundlist', nav: true }
]).buildNavigationModel();

0 个答案:

没有答案