0

我正在尝试使用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>

照原样,“测试”设置为,display:none但第二个 div 仍然显示。为什么?这可以做到吗?注意:我已经包含了所有脚本参考,tojQueryknockout 2.2.

在这里演示:http: //jsbin.com/uviwiz/1/edit

注意:我没有ko.applyBindings打电话或类似的事情。也许我需要在声明一个可观察函数之后?

4

1 回答 1

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>
于 2013-03-26T15:14:33.620 回答