knockout.js KnockoutJS可观察项未在模板中更新

ubby3x7f  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(133)

我在Knockout JS中的一个span上有一个类更新的切换。当我注销Observable的值时,它是正确的。但是,复选框的类没有按预期切换。下面是我正在使用的JS和模板代码...

JS

viewModel.toggleRequiredAnswer = function(self, index) {
    // Other unrelated code using index param here
  var checkedTest = viewModel
      .data()
      .conditionalRequired.requiredIf.some(function(arr) {
        return arr === index;
    });
    self.isChecked = ko.observable(checkedTest);
};

KnockoutJS模板

<ul class="list" data-bind="foreach: list">
    <li>
        <span
          class="glyphicon glyphicon-admin"
          data-bind="
                    click: $parent.toggleRequiredAnswer($data, $data.value),
                    css: $data.isChecked() ? 'glyphicon-check' : 'glyphicon-unchecked'"
        >
            </span>
        <span data-bind="text: $data.text"></span>
    </li>
</ul>
eh57zj3b

eh57zj3b1#

当函数toggleRequiredAnswer被调用时,你用一个新的可观察对象覆盖了self.isChecked属性,挖空视图与它的关系就变松了。函数toggleRequiredAnswer看起来应该是这样的:

viewModel.toggleRequiredAnswer = function(self, index) {
    // Other unrelated code using index param here
  var checkedTest = viewModel
      .data()
      .conditionalRequired.requiredIf.some(function(arr) {
        return arr === index;
    });
    self.isChecked(checkedTest);
};

相关问题