Knockout.js 使用布尔值的敲除单选按钮绑定
正如我在运行它时创建的那样,它不会像预期的那样将值绑定到no Blue选项Knockout.js 使用布尔值的敲除单选按钮绑定,knockout.js,knockout-mapping-plugin,Knockout.js,Knockout Mapping Plugin,正如我在运行它时创建的那样,它不会像预期的那样将值绑定到no Blue选项 var viewModel = { isBlue: ko.observable(false) //isBlue: ko.observable("false") this works }; 正如我在那里提到的,当我传递一个字符串值false时,它会执行绑定。很明显,knockout也进行类型比较 在我的应用程序中,我使用komapper创建视图模型。对于布尔值中的属性,它创建布尔值并初始化布尔值中
var viewModel = {
isBlue: ko.observable(false)
//isBlue: ko.observable("false") this works
};
正如我在那里提到的,当我传递一个字符串值false时,它会执行绑定。很明显,knockout也进行类型比较
在我的应用程序中,我使用komapper创建视图模型。对于布尔值中的属性,它创建布尔值并初始化布尔值中的变量。
我需要将它们转换为字符串吗?在输入单选按钮元素中,我们将始终必须处理字符串值。我可以为复选框使用布尔值吗
我尝试了checkedValue,但仍然没有成功。是的。src绑定在内部只返回element.value,对于浏览器来说,它是一个字符串。Check,使用此缩写/注释代码获取与被检查关联的值:
var checkedValue = ko.pureComputed(function() {
// Abbreviated, first KO does some stuff for other cases, but
// in the end it'll do:
return element.value; // Where `element` is the actual DOM element.
});
通常,一个布尔值将由一个复选框表示,在这种情况下,只有一半的情况下您会遇到类似的问题
解决方案包括您提到的使用字符串以及在实际可观察对象前面使用可写计算机的解决方案,例如:
viewModel.viewIsBlue = ko.computed({
read: function() { return viewModel.isBlue().toLocaleString(); },
write: function(newVal) { viewModel.isBlue(newVal === 'true'); }
});
如果您经常重复上述内容,也可以使用具有类似功能的自定义扩展器。是。src绑定在内部只返回element.value,对于浏览器来说,它是一个字符串。Check,使用此缩写/注释代码获取与被检查关联的值:
var checkedValue = ko.pureComputed(function() {
// Abbreviated, first KO does some stuff for other cases, but
// in the end it'll do:
return element.value; // Where `element` is the actual DOM element.
});
通常,一个布尔值将由一个复选框表示,在这种情况下,只有一半的情况下您会遇到类似的问题
解决方案包括您提到的使用字符串以及在实际可观察对象前面使用可写计算机的解决方案,例如:
viewModel.viewIsBlue = ko.computed({
read: function() { return viewModel.isBlue().toLocaleString(); },
write: function(newVal) { viewModel.isBlue(newVal === 'true'); }
});
如果您经常重复上述内容,您也可以使用具有类似功能的自定义扩展器。我认为您遇到的错误已在更新版本的knockout中修复
它的工作方式和您尝试过的方式:
<input name="Test" type="radio" data-bind="checkedValue: true,
checked: isBlue" />Blue
<input name="Test" type="radio" data-bind="checkedValue: false,
checked: isBlue" />No Blue
如果您包括淘汰版3.4,它将按预期工作:
ko.applyBindings{
蓝色:高
};
蓝色
没有蓝色
3.4.0:是否有效我认为您遇到了一个bug,该bug已在稍后版本的knockout中修复
它的工作方式和您尝试过的方式:
<input name="Test" type="radio" data-bind="checkedValue: true,
checked: isBlue" />Blue
<input name="Test" type="radio" data-bind="checkedValue: false,
checked: isBlue" />No Blue
如果您包括淘汰版3.4,它将按预期工作:
ko.applyBindings{
蓝色:高
};
蓝色
没有蓝色
3.4.0:如果您在问题本身中包含了重新处理问题/理解问题所需的所有代码,那么该页面是否有效?这样,即使到JSFIDLE rots或JSFIDLE的链接已关闭,该页面仍然有用。如果您在问题本身中包含了重新处理问题/理解问题所需的所有代码,那么该页面是否有效,因此,即使到jsfiddle rots或jsfiddle的链接已关闭,此页面仍然有用。CheckedValue绑定实际上可以与knockout-3..04一起使用,没有任何问题。我在提琴中提到旧版本2.1.0是不好的。这个答案非常有用,因为您在两个版本中都包含了敲除行为。CheckedValue绑定实际上与敲除-3..04一起工作,没有任何问题。我在提琴中提到旧版本2.1.0是不好的。这个答案非常有用,因为两个版本中都包含了淘汰行为。