Angular: вызывается метод onclick при изменении текста в текстовом поле

0

Я новичок в Anuglar JS Просто изучая основы, и я написал следующую программу:

<html>
<head>
    <script src="js/angular.min.js"></script> 
    <script src="js/mycontroller.js"></script>
    </head>
<body ng-app="myapp">

    <div ng-controller="MyFirstController">

        <input type="text" name="username" ng-model="username">
        <input type="button" value="submit" ng-click="checkvalidate()">
        Username entered is {{username}}
        Result is {{checkvalidate()}}
    </div>

и мой контроллер

var app=angular.module('myapp',[]);
app.controller('MyFirstController',function($scope)
              {

    $scope.checkvalidate=function()
    {
      //  alert($scope.username);
        console.log("called");
        var user=$scope.username;
        if(user.indexOf('@')!=-1)
            return true;
        else
            return false;
    };
});

Когда я ввожу текст в текстовое поле, метод checkvalidate() вызывается для каждого введенного символа. Почему это называется.

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

  • 0
    Небольшое предложение: не нужно создавать свой заголовок во всех заглавных буквах
  • 0
    извинения просто случайно набрал заглавные буквы
Теги:

3 ответа

3

Вы выводите:

Result is {{checkvalidate()}}

Когда просмотр обновляется, он запрашивает вашу функцию для данных. И View обновляется каждый раз, когда вы меняете свою модель имени пользователя. Назначьте свою валидацию переменной и выводите ее на просмотр. Что-то вроде:

$scope.isValid = false;
$scope.checkvalidate=function()
    {
      //  alert($scope.username);
        console.log("called");
        var user=$scope.username;
        if(user.indexOf('@')!=-1)
            $scope.isValid = true;
        else
            $scope.isValid = false;
    };

И чем в html:

Username entered is {{username}}
Result is {{isValid }}
  • 0
    Хаха, мы представили наши ответы одновременно :)
  • 0
    спасибо, что это было полезно. это означает, что весь вид обновляется, когда изменяется даже одно значение модели.
Показать ещё 1 комментарий
1

Это связано с циклом углового дайджеста при печати метода в строке:

Result is {{checkvalidate()}}

Я бы рекомендовал в функции checkValidate установить переменную "isValid", чтобы отслеживать, действительно ли она или нет. Таким образом, вы можете распечатать его без этого.

Result is {{isValid}}
0

Угловая, как и множество других современных интерфейсных представлений, реализует привязку данных.

Это означает, что Angular позволяет писать представления в декларативном синтаксисе. Например:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app>
  <input ng-model="username" type="text"/>
  <p>The username is {{username}}
</div>

Это означает, что "пусть этот вход обрабатывает переменное username ". Это не обязательно означает, что угловой будет наблюдать событие onchange, так как директива ng-model может использоваться на связке различных типов входов, даже не стандартных HTML5.

Каждый раз, когда угловой перерисовывает представление, он запрашивает значение имени пользователя для области видимости и меняет вид.

Что-то подобное происходит, когда вы интерполируете вызов функции á, как checkvalidate.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню