Реализация кнопки сброса в Angular JS

0

Я хочу знать, в чем цель $scope.reset(); в функции контроллера? Сброс, похоже, работает без этого кода, но документация говорит об использовании этого кода, и я не могу понять, почему:

 <body ng-app="myapp" ng-controller="resetController">
    <label>Enter name</label><input type="text" ng-model="name"/>
    <label>Enter emailid</label><input type="text" ng-model="email"/>
    <button ng-click="reset()">Reset</button>
    <script>
        angular.module("myapp",[])
        .controller("resetController", function($scope)
        {
            $scope.reset = function()
            {
                $scope.name = "";
                $scope.email = "";
            }
            $scope.reset(); /* not sure why we need this */
        });
    </script>
</body>
  • 0
    сброс очистит поля ввода, с которыми связаны name и email
  • 0
    но поля ввода очищаются, даже если я опускаю код $scope.reset(); с контроллера @pixelbits. Так в чем же тогда его цель?
Показать ещё 3 комментария
Теги:

3 ответа

1
Лучший ответ

вы спрашиваете /* not sure why we need this */

 $scope.reset = function(){
            $scope.name = "";
            $scope.email = "";
 }
 $scope.reset(); /* not sure why we need this */

Фактически он вызывает функцию reset() при первом запуске контроллера, поэтому перед тем, как у вас есть время, чтобы поместить anythink на два входа. Лучше объявлять поля перед их использованием, чтобы избежать "неопределенной" ошибки на стороне контроллера. в этом конкретном случае это ничего не меняет, но, может быть, в этом примере они делают другое.

Вы можете попытаться поставить предупреждение внутри функции, оно должно вызвать его при первом запуске и каждый раз, когда вы нажимаете на reset()

 $scope.reset = function(){
            alert("call to reset");
            $scope.name = "";
            $scope.email = "";
 }
  • 0
    Большое спасибо. Запуск оповещения () объясняет все.
2
<body ng-app="myapp" ng-controller="resetController">
        <label>Enter name</label><input type="text" ng-model="name"/>
        <label>Enter emailid</label><input type="text" ng-model="email"/>
        <button ng-click="reset()">Reset</button>
    <script>
        angular.module("myapp",[])
        .controller("resetController", function($scope)
        {
            $scope.reset = function()
            {
                $scope.name = "";
                $scope.email = "";
            }
            $scope.reset(); /* not sure why we need this */
        });
    </script>
</body>

Это ваш код. Теперь посмотрим, у вас есть ng-click="reset()". Это вызывает метод $ scope.reset внутри контроллера, поэтому поля очищаются.

Как вы хотите знать, что: $scope.reset();/* не уверен, зачем нам это нужно */

НЕТ, вам это не нужно, если только вы не вызываете этот метод из своего представления. $scope.reset() используется внутри контроллера, когда вам нужно вызвать метод при загрузке страницы.

* Я думаю, что $scope.reset() может использоваться для очистки полей при первой загрузке страницы.

  • 0
    Ты прав. Добавление alert () в функцию reset подтверждает то, что вы сказали. Приветствия.
0

Попробуйте этот путь

<body ng-app="myapp" ng-controller="resetController">
<label>Enter name</label><input type="text" ng-model="fromData.name"/>
<label>Enter emailid</label><input type="text" ng-model="fromData.email"/>
<button ng-click="reset()">Reset</button>
<script>
    angular.module("myapp",[])
    .controller("resetController", function($scope)
    {
        $scope.fromData = [];


        $scope.reset = function()
        {
            $scope.fromData = [];
        }
    });
</script>

Ещё вопросы

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