我有一个简单的loggedIn
属性作为ko
绑定作为布尔值,因此当一个人登录时(一个具有异步xhr的检查以确认服务器端)的一个元素应显示标题:
<!-- ko if: loggedIn -->
<div class="loggedin">
<a class="logout">Log Out</a>
</div>
<!-- /ko -->
<!-- ko ifnot: loggedIn -->
<div class="loggedout">
<a class="login">Log In</a>
<a class="signup">Signup</a>
</div>
<!-- /ko -->
上述内容适用于展示/隐藏视角,即如果loggedIn
为true
,则会显示Log Out
链接。
我遇到的问题是将jQuery绑定到元素,即使使用.on
:
$('.loggedin').on('click', '.logout', function () {
// Never fires...
});
如果我刷新页面会有效,但任何动态更改都会让我无法绑定到点击(或任何其他)事件。
更新:我已创建a fiddle以显示问题
答案 0 :(得分:1)
这样做的一个好方法是在vm中使用一个函数来完成工作,而不是依赖于jquery事件。然后将click事件绑定到您的函数。
<div class="loggedout" data-bind="click: someVMFunction">
<a class="login">Log In</a>
<a class="signup">Signup</a>
</div>
答案 1 :(得分:0)
我找到的解决方案是使用ko
的{{1}}:
visible
这似乎完美无缺,允许jQuery无限制地绑定元素。