Javascript can';t使knockout.js依赖的可观察链接正常工作
我很难在knockout.js中获得一个简单的DependentToServable链。这是我的密码:Javascript can';t使knockout.js依赖的可观察链接正常工作,javascript,knockout.js,Javascript,Knockout.js,我很难在knockout.js中获得一个简单的DependentToServable链。这是我的密码: var viewModel = { didWork: ko.observable(''), stillWorking: ko.observable(''), didYouQuit: ko.observable('') }; viewModel.stillWorkingVisible = ko.dependentObservable(function () {
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" /> No
<input type="radio" name="didWork" value="Yes" data-bind="checked: didWork" /> Yes
</li>
<li data-bind="visible: stillWorkingVisible">Are you still working?<br />
<input type="radio" name="stillWorking" value="No" data-bind="checked: stillWorking" /> No
<input type="radio" name="stillWorking" value="Yes" data-bind="checked: stillWorking" /> Yes
</li>
<li data-bind="visible: didYouQuitVisible">Did you quit?<br />
<input type="radio" name="didYouQuit" value="No" data-bind="checked: didYouQuit" /> No
<input type="radio" name="didYouQuit" value="Yes" data-bind="checked: didYouQuit" /> Yes
</li>
</ul>
var viewModel={
干活儿:高。可观察(“”),
仍在工作:可观察(“”),
didYouQuit:ko.可观察(“”)
};
viewModel.stillWorkingVisible=ko.DependentToServable(函数(){
返回此.didWork()==“是”;
},视图模型);
viewModel.didYouQuitVisible=ko.DependentToServable(函数(){
警报(“正常”);
返回this.stillWorkingVisible();
},视图模型);
应用绑定(视图模型);
- 你做过什么工作吗?
不
对
- 您还在工作吗?
不
对
- 您退出了吗?
不
对
每当检查“您是否仍在工作”收音机时,DidYouQuit Visible DependentToServable似乎从未更新或启动。我有一个警报(),每当“你还在工作吗”收音机被选中/取消选中时,警报就不会弹出。但是,当选中/取消选中第一个无线电组时,警报确实会显示。第一个DependentToServable(仍然工作可见)工作正常。想法?您的代码在以下断言上似乎是错误的:
return this.stillWorkingVisible() == 'Yes'
stillWorkingVisible()
将永远不会返回字符串“Yes”,而是返回bool
编辑
使用修复程序时,似乎与预期的一样工作。工作版本:
stillWorkingVisible()
正在返回一个bool非常有趣。不知道为什么这不起作用。。我在这里对代码进行了修改: