名称+复选框的单向绑定工作正常,但它最初不适用于单选按钮employeeTypeA,虽然它在viewmodel中的值为true,html显示单选按钮未设置,为什么会这样?
<script type="text/javascript">
$(function()
{
var PersonViewModel = function()
{
this.firstName = ko.observable('Lisa');
this.lastName = ko.observable('T');
this.isCustomer = ko.observable(true);
this.employeeTypeA = ko.observable(true);
this.employeeTypeB = ko.observable(false);
};
var personViewModel = new PersonViewModel();
ko.applyBindings(personViewModel, $('data').get(0));
});
</script>
<div id="data">
<span data-bind="text: firstName"></span>
<span data-bind="text: lastName"></span>
<input type="checkbox" data-bind="checked: isCustomer" title="Is a customer" />
<input name="x" type="radio" data-bind="checked: employeeTypeA" title="Employee type A" />
<input name="x" type="radio" data-bind="checked: employeeTypeB" title="Employee type B" />
</div>
Run Code Online (Sandbox Code Playgroud)
的checked结合原理不同的单选按钮,从文档:
对于单选按钮,当且仅当参数值等于单选按钮节点的
value属性时,KO才会设置要检查的元素.
所以你需要把你改成PersonViewModel这样的东西:
var PersonViewModel = function()
{
this.firstName = ko.observable('Lisa');
this.lastName = ko.observable('T');
this.isCustomer = ko.observable(true);
this.employeeType = ko.observable('TypeB');
};
Run Code Online (Sandbox Code Playgroud)
和你的单选按钮:
<input name="x" type="radio" data-bind="checked: employeeType"
value="TypeA" title="Employee type A" />
<input name="x" type="radio" data-bind="checked: employeeType"
value="TypeB" title="Employee type B" />
Run Code Online (Sandbox Code Playgroud)
如果要保留employeeTypeA和employeeTypeB属性,可以引入一个返回类型的计算属性:
this.employeeTypeA = ko.observable(false);
this.employeeTypeB = ko.observable(true);
this.employeeType = ko.computed(function()
{
if (this.employeeTypeA())
return 'TypeA';
if (this.employeeTypeB())
return 'TypeB';
},this);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您还需要value在单选按钮上添加属性.
| 归档时间: |
|
| 查看次数: |
7967 次 |
| 最近记录: |