KnockoutJS Observable 未在模板中更新
KnockoutJS Observable not updating in template
我在 Knockout JS 中 class 更新的跨度上有一个切换。当我注销 Observable 的值时,它是正确的。但是,复选框的 class 没有按预期切换。这是我正在使用的 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>
当函数 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);
};
我在 Knockout JS 中 class 更新的跨度上有一个切换。当我注销 Observable 的值时,它是正确的。但是,复选框的 class 没有按预期切换。这是我正在使用的 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>
当函数 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);
};