奇怪的行为KnockoutJS和jQuery Mobile复选框

时间:2014-01-24 16:22:06

标签: jquery-mobile knockout.js

我有一个记住我的登录页面复选框,全部在jQuery Mobile中。我也在使用KnockoutJs。

enter image description here

我有一个定义如下的模型:

MOX.Login = function()
{
   var self = this;

   self.Username = ko.observable("");
   self.Password = ko.observable("");
   self.IsRememberMe = ko.observable(true);
}

在我的viewmodel中,我执行以下操作:

self.Login = ko.observable(new MOX.Login()); //login data

我对这个对象没有别的办法。

复选框的html如下:

<label for="chkRememberLogin" data-bind="text: GetLabel('lblRememberLogin')"></label>
<input type="checkbox" id="chkRememberLogin" data-bind="checked: Login().IsRememberMe" />

我可能希望由于IsRememberMe属性的默认值设置为true,因此复选框设置为true。当我在页面上使用相同的绑定设置常规复选框时,会检查它。 当我检查该值时,它被设置为true。

此外,当我第一次点击复选框时,它仍未选中。 IsRememberMe的价值确实是假的。第二次点击时,值会更改为true,同时也会选中复选框。

如何确保第一次选中复选框?

附带问题,我默认情况下将IsRememberMe设置为false。初始化后总是如此。怎么样?

2 个答案:

答案 0 :(得分:0)

它可能与您的MOX命名空间或您未发布的其他代码有关。检查此simple fiddle - 您在此处列出的所有问题均未发生。

答案 1 :(得分:0)

要检查的另一件事是确保您的复选框实际上没有渲染,只是没有移位,所以你看不到它。在复选框上呈现动态元素后,Jquery移动版需要具有新属性。我会将复选框设置为data-enhance =“false”,以确保这不是冲突。