2016-11-17 52 views
0

我是一個新的KnockOutJs,我有這個問題。 這是我簡單的形式,我只會在單擊按鈕時執行Login功能。但是,該函數在頁面加載時不執行用戶單擊操作時執行。 我該如何解決它?KnockoutJs ViewModel函數

$().ready(function() { 
 
     function ViewModel() {   
 
     var self = this; 
 
     self.username = ko.observable(); 
 
     self.password = ko.observable(); 
 
     self.Login = function() {   
 
      console.log('do login'); 
 
     }; 
 
     } 
 
     ko.applyBindings(new ViewModel()); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 
<div class="form-group"> 
 
    <input type="text" id="username" name="username" data-bind="value:username" placeholder="User Name" /> 
 
</div> 
 
<div class="form-group"> 
 
    <input type="password" id="password" name="password" data-bind="value:password" placeholder="Password" /> 
 
</div> 
 
<button type="button" id="btnlogin" data-bind="click:Login()">login</button>

+1

您必須刪除'click'綁定中的'()':您引用該方法,而不是執行它。 I.e .:'data-bind =「點擊:登錄'' – user3297291

+0

DOM元素創建完成後,您正在執行'Login'...因此沒有點擊按鈕就會發生警報事件... – gkb

回答

3

通過更換按鈕行:

<button type="button" id="btnlogin" data-bind="click:Login">login</button> 

您當前正在執行的DOM創建的登錄方法,去掉括號將等待click事件是觸發。

相關問題