2014-01-24 39 views
0

我有一個記住我的登錄頁面複選框,全部在jQuery Mobile中。我也在使用KnockoutJs。奇怪行爲KnockoutJS和jQuery Mobile複選框

enter image description here

我有一個定義如下模型:

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

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

在我的視圖模型我做到以下幾點:

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。初始化後總是如此。怎麼來的?

+1

你可能想檢查一下(當使用第三庫,淘汰賽通常需要自定義綁定):http://stackoverflow.com/a/19706231/384701 – billy

+0

@billy Thx,工作。仍然想知道爲什麼其餘的複選框工作正常,除了這一個。 – JurgenStillaert

回答

0

它可能與您的MOX命名空間或您沒有發佈的其他代碼有關。檢查這simple fiddle - 您列出的問題都沒有發生在這裏。

0

另一件要檢查的是確保你的複選框不是實際渲染,只是沒有移過來,所以你看不到它。在複選框上呈現動態元素之後,Jquery移動需要擁有新鮮的屬性。我會將複選框設置爲data-enhance =「false」,以確保這不是衝突。