繁体   English   中英

KnockoutJS:如何将observable传递给自定义绑定?

[英]KnockoutJS: How pass observable to custom binding?

Javscript:

  var asdasd = {
    test: ko.observableArray([0, 50])
  };

  alert(asdasd.test()); //0,50

  asdasd.test.subscribe(function() {
    return alert("I was changed!!");
  });

  ko.bindingHandlers.rangeslider = {
    init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
      var length;

      length = valueAccessor().length; //0 =(
      return alert("Why valueAccessor().length is " + length + " when it wasn't changed? =((");
    }
  };

  ko.applyBindings(asdasd);

HTML:

<div data-bind="rangeslider: test"></div>

问题是init中的valueAccessor()是空的,但是alert保持它有值。 如果我传递的是rangeslider: test() (unwraping observable),它可以正常工作,但我需要从init更改observable的值。

那么这个价值在没有通知的情况下失去了它的变化?

http://jsfiddle.net/86sAP/3/ - 实例。

您必须解包valueAccessor才能获得可观察的值:

length = ko.utils.unwrapObservable(valueAccessor()).length; 

这是更新的小提琴: http//jsfiddle.net/86sAP/4/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM