击败使用可见与truthy / falsey条件

时间:2013-03-26 14:53:37

标签: jquery data-binding knockout.js

我正在尝试使用knockout 2.2data-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仍然显示。为什么?可以这样做吗?注意:我已将所有脚本引用包含在jQueryknockout 2.2中。

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

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

1 个答案:

答案 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>