更新:使用" 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);
}
};
})();
的插件