看到观察的所有扩展和自定义绑定(see all extenders and custom bindi

2019-10-18 06:32发布

是否有可能看到淘汰赛JS内连接到可观察到的所有扩展和绑定?

示例视图模式:

var viewModel = function(){
  var self = this;

  self.firstName = ko.observable().extend({required: "Please enter a name",
                                           logChange: "first name" });

  self.lastName = ko.observable().extend({ required:true});

}

我也使用多个自定义bindingHandlers包括淘汰赛X-编辑插件 ,除了KO验证插件

样品多页面浏览:

  <!--Screen 1 -->
  <input data-bind="value:firstName"/>

   ....

  <!--Screen 2 -->
  <span data-bind="editable:firstName"></span>

答:有没有一种方法来查询self.firstName()并得到所有的扩展的列表?

{required: "Please enter a name", logChange: "first name" }

B.有,我可以运行得到所有需要这个观察到的绑定处理的另一个查询? 这能返回DOM元素?

基本上我试图进口数据显示验证错误,但我想附加它们下面<span data-bind="editable"/>如果我在第二视图。

这是简单的独立验证每个输入足够的时候,但它使用的时候变得复杂ko.validation.group(viewModel) 。 即使我每天误差迭代,我没有看到我怎么可以抛出错误的原始观测到它们关联。

Answer 1:

有一个自定义绑定,您可以使用

<span data-bind="validationMessage: myObservable"></span>

如果这还不够,那么你必须发挥创意:d

有看到对观察到的所有扩展没有通用的方法。 KO验证增加了一些功能,可观察到延长观察到的,你可以使用

  • clearError
  • 错误
  • 已验证
  • isValidating
  • 规则
  • SETERROR

您需要创建一个自定义的结合能够看到连接到一个元素的所有绑定。 这不是一件坏事,它是不好的做法有依赖关系视图从视图模型。 从您的自定义绑定初始化或更新功能,您有allBindingsAccessor

ko.bindingHandlers.myBinding = {
    init: function(element, accessor, allBindingsAccessor) {
       var valueAttachedToCheckedBinding = ko.utils.unwrapObservable(allBindingsAccessor().checked);
    }
}


文章来源: see all extenders and custom bindings for observable