繁体   English   中英

不能使knockout.js依赖的可观察链起作用

[英]can't get knockout.js dependent observable chaining to work

我在使简单的dependentObservable链在knockout.js中工作时遇到麻烦。 这是我的代码:

var viewModel = {
    didWork: ko.observable(''),
    stillWorking: ko.observable(''),
    didYouQuit: ko.observable('')
};

viewModel.stillWorkingVisible = ko.dependentObservable(function () {
    return this.didWork() == 'Yes';
}, viewModel);

viewModel.didYouQuitVisible = ko.dependentObservable(function () {
    alert('ok');
    return this.stillWorkingVisible() == 'Yes' && this.stillWorking() == 'No';
}, viewModel);

ko.applyBindings(viewModel);

<ul>
    <li>Did you do any work?<br />
        <input type="radio" name="didWork" value="No" data-bind="checked: didWork" />&nbsp;No
        <input type="radio" name="didWork" value="Yes" data-bind="checked: didWork" />&nbsp;Yes
    </li>
    <li data-bind="visible: stillWorkingVisible">Are you still working?<br />
        <input type="radio" name="stillWorking" value="No" data-bind="checked: stillWorking" />&nbsp;No
        <input type="radio" name="stillWorking" value="Yes" data-bind="checked: stillWorking" />&nbsp;Yes
    </li>
    <li data-bind="visible: didYouQuitVisible">Did you quit?<br />
        <input type="radio" name="didYouQuit" value="No" data-bind="checked: didYouQuit" />&nbsp;No
        <input type="radio" name="didYouQuit" value="Yes" data-bind="checked: didYouQuit" />&nbsp;Yes
    </li>
</ul>

每当检查“您还在工作”无线电时,didYouQuitVisible依赖的Observable似乎都不会更新或触发。 我在那里有一个alert(),并且无论“检查中” /“未检查”收音机是否都不会弹出警报。 但是,当第一个无线电组被选中/未选中时,将显示警报。 第一个dependentObservable(stillWorkingVisible)可以正常工作。 想法?

您的代码在此断言上似乎是错误的:

    return this.stillWorkingVisible() == 'Yes' 

stillWorkingVisible()绝不会返回字符串“ Yes”,而是bool

编辑

小提琴似乎可以按预期的方式工作。

工作版本: http//jsfiddle.net/SvHxY/

stillWorkingVisible()返回布尔值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM