2016-11-17 5 views
0

Я новичок в KnockOutJs, и у меня есть эта проблема. Это моя простая форма, и я бы выполнил функцию Login только при нажатии кнопки. Однако функция выполняется, когда страница загружается без нажатия на нее пользователя. Как я могу это исправить?KnockoutJs ViewModel function

$().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 =" click: Login "' – user3297291

+0

Вы выполняете 'Login', как только создаются элементы DOM ... поэтому событие предупреждения, не нажимая на кнопку ... – gkb

ответ

3

Заменить кнопку строку следующим:

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

Вы в настоящее время выполнения метода Вход на создание DOM, удаление скобок будет ждать событие щелчка, чтобы быть срабатывает.