我正在尝试使用knockout 2.2
在data-bind="visible..."
上执行简单的div
。
<div id="test" style="display:none">this is visible</div>
<div data-bind="visible: $('#test').is(':visible')">show if test is visible</div>
按原样,“test”设置为display:none
,但第二个div仍然显示。为什么?可以这样做吗?注意:我已将所有脚本引用包含在jQuery
和knockout 2.2
中。
在这里演示:http://jsbin.com/uviwiz/1/edit
注意:我没有进行ko.applyBindings
电话或类似的事情。也许我需要在声明一个可观察的函数之后?
答案 0 :(得分:0)
第一个和第二个div之间没有依赖关系。 因此,如果第一个div更改它不会将其更改应用于第二个。
你可以试试这个:
var ViewModel = function()
{
var self = this;
self.boolean = ko.observable(true);
};
var vm = new ViewModel();
ko.applyBindings(vm);
setTimeout(function(){
vm.boolean(false);
}, 2000);
<!DOCTYPE html>
<html>
<head>
<script src="http://cdnjs.cloudflare.com/ajax/libs/knockout/2.2.0/knockout-min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
<div id="test" data-bind="visible:boolean">this is visible</div>
<div data-bind="visible:boolean">only show if above div is visible or not</div>
<div id="debug"></div>
</body>
</html>