Как привязать данные к списку с помощью углового JS?

0

Это мой HTML-код. Он показывает одно текстовое поле и две кнопки "go" и "clear completed" при вводе текста в texbox, и после нажатия кнопки "go" он должен быть добавлен в неупорядоченный список. Но проблема заключается в том, что показано на изображении [! [введите описание изображения здесь] [1]] [1] Я вводя текст как "hhh", и что-то другое непредвиденный текст поступает в неупорядоченный список

<html lang="en-US" ng-app="ToDo">
        <style>
            .done{ text-decoration: line-through;color: #ccc;}
        </style>
        <body>
            <div ng-controller="todoController">
                <form name="frm" ng-submit="addTodo()">
                    <input type="text" name="newtodo" ng-model="newTodo" required>
                    <button ng-disabled="frm.$invalid">Go</button>
                </form>
                <button ng-click="clearcompleted()">Clear Completed</button>
                <ul>
                    <li ng-repeat="todo in todos track by $index">
                        <input type="checkbox" ng-model="todo.done"/>{{$index + 1}}
                        <span ng-class="{'done':todo.done}">{{todo.title}}</span>
                    </li>
                </ul>
            </div>
            <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
            <script src="//cdnjs.cloudflare.com/ajax/libs/annyang/2.0.0/annyang.min.js"></script>
            <script>
                                    var app = angular.module('ToDo', []);
                                    app.controller('todoController', function($scope){
                                    $scope.todos = JSON.parse(localStorage.getItem('todos')) || []

                                            $scope.addTodo = function(){
                                            $scope.todos.push({'title':$scope.newTodo, 'done':false})
                                                    $scope.newTodo = ''
                                            }
                                    $scope.clearcompleted = function(){
                                    $scope.todos = $scope.todos.filter(function(item)){
                                    return !item.done;
                                    }
                                    }
                                    $scope.$watch('todos', function(newValue, oldValue)){
                                    if (newValue != oldValue){
                                    localStorage.setItem('todos', JSON.stringify(newValue))
                                    }
                                    }, true)
                                    })
            </script>
        </body>
    </html>


      [1]: http://i.stack.imgur.com/TRzbZ.png
  • 0
    просто увидеть ошибки в консоли браузера
  • 0
    Пожалуйста, отформатируйте ваш код правильно и убедитесь, что у вас нет синтаксических ошибок.
Показать ещё 1 комментарий

2 ответа

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

Я думаю, что синтаксис неверен в 2-х местах. Попробуйте ниже

<html lang="en-US" ng-app="ToDo">
    <style>
        .done{ text-decoration: line-through;color: #ccc;}
    </style>
    <body>
        <div ng-controller="todoController">
            <form name="frm" ng-submit="addTodo()">
                <input type="text" name="newtodo" ng-model="newTodo" required>
                <button ng-disabled="frm.$invalid">Go</button>
            </form>
            <button ng-click="clearcompleted()">Clear Completed</button>
            <ul>
                <li ng-repeat="todo in todos track by $index">
                    <input type="checkbox" ng-model="todo.done"/>{{$index + 1}}
                    <span ng-class="{'done':todo.done}">{{todo.title}}</span>
                </li>
            </ul>
        </div>
        <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
        <script src="//cdnjs.cloudflare.com/ajax/libs/annyang/2.0.0/annyang.min.js"></script>
        <script>
                                var app = angular.module('ToDo', []);
                                app.controller('todoController', function($scope){
                                $scope.todos = JSON.parse(localStorage.getItem('todos')) || []

                                $scope.addTodo = function(){
                                    $scope.todos.push({'title':$scope.newTodo, 'done':false});
                                    $scope.newTodo = '';
                                }
                                $scope.clearcompleted = function(){
                                    $scope.todos = $scope.todos.filter(function(item){
                                        return !item.done;
                                    })
                                }
                                $scope.$watch('todos', function(newValue, oldValue){
                                    if (newValue != oldValue){
                                        localStorage.setItem('todos', JSON.stringify(newValue))
                                    }
                                }, true)
                                })
        </script>
    </body>
</html>
0

Я изменил ваш код.

var app = angular.module('ToDo', []);
                    app.controller('todoController', function($scope) {
                        $scope.todos = JSON.parse(localStorage.getItem('todos')) || []

                        $scope.addTodo = function() {
                            $scope.todos.push({
                                'title': $scope.newTodo,
                                'done': false
                            })
                            $scope.newTodo = ''
                        }
                        $scope.clearcompleted = function() {
                            $scope.todos = $scope.todos.filter(function(item) {
                                return !item.done;
                            })
                        }
                        $scope.$watch('todos', function(newValue, oldValue) {
                            if (newValue != oldValue) {
                                localStorage.setItem('todos', JSON.stringify(newValue))
                            }
                        }, true)
                    })

Ещё вопросы

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