gpt4 book ai didi

javascript - knockout 无法观察到样式属性

转载 作者:行者123 更新时间:2023-11-28 12:30:14 27 4
gpt4 key购买 nike

全部!我有以下 HTML:

  <table>
<thead>
<tr>
<th>Simple app</th>
</tr>
</thead>
<tbody data-bind="foreach: tests">
<tr>
<td data-bind="text: testName"></td>
<td data-bind="text: result"></td>
<td><button data-bind="click: runTest, style: {backgroundColor: color}">Run test</button></td>
</tr>
</tbody>
</table>

以及以下js:

function Test(testName, test) {
var vm = {};

vm.result = ko.observable(false);
vm.testName = testName;
vm.color = ko.computed(function (){
return vm.result === true ? 'green' : 'red';
}, vm);

vm.test = test;
vm.runTest = function () {
var result = vm.test();
vm.result(result);
}

return vm;
}

function TestsViewModel(modelName, tests) {
var vm = {};

vm.modelName = modelName;
vm.tests = [];

for(var i = 0; i < tests.length; i++){
vm.tests.push(Test(tests[i].title, tests[i].test));
}

return vm;
}

function test1() {
return true;
}

function test2(){
return false;
}

function test3(){
return void (0) === undefined;
}

ko.applyBindings(TestsViewModel('Name', [{
title: 'Test1',
test: test1
}, {
title: 'Test2',
test: test2
}, {
title: 'Test3',
test: test3
}]));

我想根据结果属性的值更改按钮的颜色。但 knockout 不会检查结果更改时的值。有什么问题吗?

最佳答案

你错过了括号:

vm.color = ko.computed(function (){
return vm.result() === true ? 'green' : 'red'; // vm.result()
}, vm);

关于javascript - knockout 无法观察到样式属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22789869/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com