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

标签 javascript knockout.js

全部!我有以下 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/

相关文章:

javascript - 将 simpleCart 项目添加到表单作为输入值

javascript 正则表达式匹配所有自定义注释掉的部分,但不匹配其他文本

javascript - 返回或推送字符串字符

javascript - 位置固定在 Owl Carousel 内不起作用(旋转木马上的固定位置上一个按钮)

javascript - 为什么 Knockout js 示例中不显示姓氏

javascript - KnockoutJS - 依赖可观察量或计算可观察量

javascript - 如何使用knockoutjs绑定(bind)嵌套输入

jquery - 如何通过KO的绑定(bind)方法更改表格行背景颜色?

javascript - 如何在 Knockout.js 中模型和 View 之间转换数据?

javascript - 编码字符破坏了 IE8 上的 Knockout js 数据绑定(bind)