我有两个代表名字的复选框。单击其中任何一个时,将更新selectedName()
observable。另外,我有两个ko.computed
函数来确定是否选中了复选框。每个都检查selectedName()
值是否与名称匹配。
最终结果是复选框的行为类似于单选按钮。
为什么点击复选框会产生Uncaught TypeError: undefined is not a function
?
我也尝试过checked: NameIsJohn()
和checked: NameIsJohn() === 'True'
。另外,我尝试将checkedValue: true
绑定到输入元素。
<input type="checkbox" data-bind="click: selectedName('John'), checked: NameIsJohn">John</input>
<input type="checkbox" data-bind="click: selectedName('Jack'), checked: NameIsJack">Jack</input>
<script>
$(function() {
var vm = function() {
var self = this;
this.selectedName = ko.observable();
this.NameIsJohn = ko.computed( function() {
return self.selectedName === 'John';
});
this.NameIsJack = ko.computed( function() {
return self.selectedName === 'Jack';
});
};
ko.applyBindings(new vm());
)};
</script>
答案 0 :(得分:1)
执行此操作时:
data-bind="click: selectedName('John')"
您没有将click
绑定到函数selectedName
。您正在绑定,请单击调用selectedName('John')
的返回值。当然,这是undefined
,因此是您的错误。
您需要为function
绑定提供click
。您可以通过简单地将调用包装在函数中来实现:
data-bind="click: function() { selectedName('John') }"