向allBindingsAccessor添加新绑定

时间:2015-03-06 21:31:19

标签: knockout.js

更新:使用" valueAllowUnset"解决了真正的问题(http://knockoutjs.com/documentation/value-binding.html#using-valueallowunset-with-select-elements)我仍然想知道是否可以添加到allBindingsAccessor以及如何进行。

我一直在尝试创建bindingHandler,以防止在加载选项之前,<select>将observable设置为未定义。 (在我的例子中,选项是通过ajax加载的)

我遇到的问题是我想添加&#39;价值&#39;一旦选项被填充到allBindingsAccessor,当我这样做时,我得到一个例外:&#39; undefined不是函数&#39;。

我可以看到newBinding缺少导致错误的Get()和Has()。我无法弄清楚我应该做些什么。

这里是bindingHandler:(仅供参考:这不是我所需要的正确方法,但是我仍然希望了解是否可以做这样的事情。)

(function() {
  var originalInit = ko.bindingHandlers.options.init;
  var originalUpdate = ko.bindingHandlers.options.update;
  ko.bindingHandlers.myOptions = {
    update: function(element, valueAccessor, allBindingsAccessor, viewModel) {
      var optionsArr = ko.unwrap(valueAccessor());
      if (optionsArr === undefined || optionsArr.length === 0) return;

      var myVal = allBindingsAccessor.get("myValue");
      if (myVal === undefined || myVal === null) return;

      var newBindings = function() {
        var tmpBindings = allBindingsAccessor();
        tmpBindings.value = myVal;
        return tmpBindings;
      };

      originalUpdate(element, valueAccessor, newBindings, viewModel);
    }
  };
})();

这是一个显示:http://plnkr.co/edit/8fgrIE2NtzLJ8UkSoicu

的插件

0 个答案:

没有答案