Angularjs доступ к форме в контроллере (todolist)? - PullRequest
0 голосов
/ 17 июня 2020

Я создаю список дел в angular js. Я пытаюсь получить доступ к форме в контроллере. Однако когда я нажимаю кнопку «Добавить», она не добавляется в список.

Также нет отображения ошибки, которая показывает мне, что функция, вероятно, ничего не делает.

Как мне получить кнопку добавления новой для добавления в список.

Вот индекс. html:

<!DOCTYPE html>
<html   lang="en">
<head>
    <h1>To do List</h1>
    <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>

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

    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body ng-app="myApp" ng-controller="todoCtrl as vm">


<form name="vm.myform" ng-submit="toDoAdd()">
    <input type="text" ng-model="todoInput" size="50" placeholder="Add New">
    <input type="submit" ng-click="vm.toDoAdd " value="Add New">

    <br>
    <div ng-repeat="x in todoList">
        <input type="checkbox" ng-model="x.done"><span ng-bind="x.todoText">
    </span>
    </div>
    <p>
        <button ng-click="remove()">Remove marked</button></p>
</form>
</body>
</html>

Вот приложение. js:

var app = angular.module('myApp', []);

app.controller('todoCtrl',['$scope' ,function ($scope) {
    $scope.toDoList = [{todoText: "check", done: false}];

    function todoAdd() {
        var vm=this;
        vm.toDoAdd=toDoAdd;
        $scope.toDoAdd = function () {
            $scope.toDoList.push({todoText: $scope.todoInput, done: false});
            $scope.todoInput = "";
        }
    }
}])

1 Ответ

0 голосов
/ 17 июня 2020

Я внес некоторые изменения в ваше приложение:

<body ng-app="myApp" ng-controller="todoCtrl">
  <form ng-submit="toDoAdd()">
      <input type="text" ng-model="todoInput" size="50" placeholder="Add New">
      <input type="submit" value="Add New">
      <br>
      <div ng-repeat="x in toDoList">
        <input type="checkbox" ng-model="x.done" /><span ng-bind="x.todoText">
      </span>
      </div>
      <p>
      <button type="button" ng-click="remove()">Remove marked</button></p>
  </form>
</body>
var app = angular.module('myApp', []);

app.controller('todoCtrl',['$scope' ,function ($scope) {
  $scope.toDoList = [{todoText: "check", done: false}];

  $scope.toDoAdd = function () {
    $scope.toDoList.push({todoText: $scope.todoInput, done: false});
    $scope.todoInput = "";
  }
}])

Есть два способа использования контроллеров, один с $scope и другой с controller as vm, в этом случае для простоты я используя $scope, вы можете узнать больше о других обозначениях в этого руководства

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