【问题标题】:checked='checked' not working with knockout checked data-binding for radio buttonchecked='checked' 不能与单选按钮的剔除检查数据绑定一起使用
【发布时间】:2017-09-05 08:08:58
【问题描述】:

我在我的代码中使用了敲除,并且有一个 foreach 循环,其中有几个单选按钮,我通过 $index 属性访问第一个按钮。我希望在加载时默认检查第一个单选按钮。但还有一个带有属性的“已检查”数据绑定。

下面是sn-p的代码:

<input type="radio" checked='checked' name="foo" data-bind="value: $data.methodId, checked: $parent.checkout.valueImp">

默认情况下不选中单选按钮。有没有一种方法可以让我在加载时默认将此单选按钮设置为“已选中”,同时数据绑定也可以工作。

【问题讨论】:

  • 最好在您的 JS 代码中执行此操作(也比 data-bind 中的神秘值更具可读性)

标签: javascript jquery knockout.js


【解决方案1】:

默认情况下不选中单选按钮

这是因为您已将其选中状态绑定到 viewmodel 属性。要使其默认选中,请默认为$parent.checkout.valueImp 指定此单选按钮的值。

例子:

var vm = {
  value1: ko.observable("one"),
  value2: ko.observable("two"),
  currentValue: ko.observable("two") // <===
};
ko.applyBindings(vm, document.getElementById("container"));
Note that Two is checked by default:
<div id="container">
  <label>
    <input type="radio" name="x" data-bind="value: value1, checked: currentValue"> One
  </label>
  <br>
  <label>
    <input type="radio" name="x" data-bind="value: value2, checked: currentValue"> Two
  </label>
  <div>Curent value: <span data-bind="text: currentValue"></span></div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>

【讨论】:

  • 难道这个数据绑定可以通过checked='checked' 默认将value分配给$parent.checkout.valueImp
  • @N.Y.:我不知道。模型设置视图的初始状态,而不是相反。可以创建一个不同的自定义绑定来做到这一点,但内置的 value 绑定没有。我认为这没有意义;在模型中提供默认值,而不是视图。
猜你喜欢
  • 2017-11-17
  • 1970-01-01
  • 2012-04-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-24
  • 1970-01-01
  • 2013-07-24
  • 2013-10-01
相关资源
最近更新 更多