在敲除验证中迫使一个场在敲除验证中复制异步

发布于 2025-01-25 07:46:05 字数 1060 浏览 2 评论 0原文

我正在扩展一个使用QuintOut.js的现有应用程序 - 但很难设置以支持无效 - 因此我无法使用敲除异步验证的验证 - (我尝试了 - 发生了比赛条件)。所以我自己滚动。这种作品。


ko.validation.rules.my_validator = {
    validator( value ) {
       var known_result = already_validated[ value ];
       if (known_result == null)
       {        
           call_server_function_on( value ).done( function( result )
           {
                already_validated[value] = result;
                // somehow force a revalidate of THIS observable here
           })
           this.message = "validating...";
           return false;
       }
       else
       {
           this.message = known_result.message;
           return self.is_valid;
       }
   }
}

我找不到任何强迫重新验证的方式。
如果我将观察到的参数传递给了可观察的参数,那么我就可以致电NotifySubscriber,这一切都可以工作 - 但这使我的验证器的UI非常可怕 - 例如,


someField.extend( {my_validator: {the_observable: someField }})

...
the_observerable.notifyObservers( the_observable());

我有什么办法可以从验证器内部进行操作?

I'm extending an existing app that uses knockout.js - but is very much not setup to support invalidating - so I can't use the knockout async validation - (I tried - race conditions happened). So I'm rolling my own. This sort of works.


ko.validation.rules.my_validator = {
    validator( value ) {
       var known_result = already_validated[ value ];
       if (known_result == null)
       {        
           call_server_function_on( value ).done( function( result )
           {
                already_validated[value] = result;
                // somehow force a revalidate of THIS observable here
           })
           this.message = "validating...";
           return false;
       }
       else
       {
           this.message = known_result.message;
           return self.is_valid;
       }
   }
}

I can't find any way of forcing the revalidate.
If I pass in the observable as a parameter, I can then call notifySubscribers, and it all works - but that makes for a really horrible ui of my validator - eg


someField.extend( {my_validator: {the_observable: someField }})

...
the_observerable.notifyObservers( the_observable());

Is there any way I can do it from inside the validator?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文