我的下拉工作很好:
<select class="picker-select" data-bind="options: searchOptions, select:{}, optionsText: 'name', optionsValue: 'id', value: selectedSearchOption" ></select>
现在我想在选择更改时执行一个函数,但它似乎不起作用。
我尝试过的事情:
onchange="actionWhenChange()" // also tried without parenthesys
MODEL:
function actionWhenChange(event) {
console.log("doing stuff");
};
错误:
未捕获(在promise中)ReferenceError:actionWhenChange未定义
使用knockout event
binding(也没有使用parenthesys进行尝试)
data-bind="event: { onchange: actionWhenChange() }, ... more bindings
MODEL:
self.actionWhenChange = function (event) {
console.log("doing stuff");
}
但我没有错误。
有什么想法吗?
答案 0 :(得分:2)
好吧,终于发现了发生了什么:)
第一个解决方案无法正常工作,因为无法找到该功能,因为它在模型中。这就是未定义错误的原因。
关于第二个选项,event binding,淘汰赛正在处理DOM事件,onchange
不是可以找到的here之一的DOM事件。
所以解决方案就是从onchange中删除on并使用change事件:
data-bind="event: { change: actionWhenChange }, ... more bindings
解决这个问题的正确方法是user3297291
所述:用这种方式在模型中使用subscribe来定义值observable:
self.selectedSearchOption.subscribe(self.actionWhenChange) –
希望这可以帮助处于未来的人:)