angularjs: сохранение нескольких студентов одновременно

0

Я пытаюсь сохранить количество студентов в то время, я написал следующий код, но я не знал, куда идти дальше. любая дополнительная информация или ссылки на ресурсы по этой теме были бы очень признательны за то, что я сделал до сих пор:

<div ng-controller="MainCtrl">
    <fieldset data-ng-repeat="student in students"> 
        <input type="text" ng-model="student.class" name="" placeholder="Class Name ">                
        <input type="text" ng-model="student.firstname" name="" placeholder="First Name ">
        <input type="text" ng-model="student.lastname" name="" placeholder="Last Name ">
        <button class="btn btn-danger" ng-show="$last" ng-click="removeStudent()">-</button>
    </fieldset>

    <button class="btn btn-primary" ng-click="addNewStudent()">New Student</button>
    <button class="btn btn-primary" ng-click="save()">Save</button>
    <button class="btn btn-warning" ng-click="cancel()">Cancel</button>                
 </div> 

контроллер:

app.controller('MainCtrl', function($scope, $modalInstance, $students) {
    $scope.students = [];

    $scope.addNewStudent = function() {
        $scope.students.push({
            classname: "",
            firstname: "",
            lastname: ""
        });
    };
    $scope.removeStudent = function() {
        var lastItem = $scope.students.length - 1;
        $scope.students.splice(lastItem);
    };

    $scope.save = function() {
        $modalInstance.close($scope.students);
    };

    $scope.delete = function() {
        $scope.students['deleted'] = 1;
        $modalInstance.close($scope.students);
    };

    $scope.cancel = function() {
        $modalInstance.dismiss('cancel');
    };
});

в представлении я могу написать информацию о студентах, но когда я нажимаю кнопку "Сохранить", она сохраняет только первого ученика

модальный экземпляр:

    $scope.openStudent = function (student) {

    var modalInstance = $modal.open({
        templateUrl: 'modalStudent.html',
        controller: 'mainCTRL',
        windowClass:'app-modal-window',
        resolve: {
            students: function () {
                var students= {};

                if (student !== undefined){
                    students['classname'] = student.classname; 
                    students['firstname'] = student.firstname ; 
                    students['lastname'] = student.lastname; 
                    students['nachname'] = student.nachname; 

                }
                console.log("studinfo",students);
                return students;
            }
        }
    });

    modalInstance.result.then(function (students) {

        if (students.deleted  === undefined || students.deleted == 0) { 
            oStudent = { classname: students.classname, 
                        firstname: students.firstname, 
                        lastname: students.lastname,
                        delete_time:"0000-00-00 00:00:00"
                        };

            saveStudent( $indexedDB,Student).then( function(id) {
                $scope.buildMenu();
            });
        } else {
             oStudent = { id: students.id,
                        delete_time:new Date().toISOString()
                        };
            deleteStudent( $indexedDB, $scope, students.id).then( function(id) {
                saveStudent( $indexedDB, Student, $scope.selectedUser.id ).then( function(id) {
                $scope.buildMenu();
            });
            });
        }
    }, function () {
        //console.log('Modal Student dismissed at: ' + new Date());
    });
}
  • 0
    все студенты $scope.students в $scope.students . Какая польза от $modalInstance здесь?
  • 0
    извините, я забыл опубликовать modalinstance, я обновил код, это мой appcontroller, я передаю существующих студентов этому модальному, mainCtrl контролирует только вид добавления нового студента
Теги:

1 ответ

0

В случае, если он является модальным, когда вы передаете существующие студенческие объекты, ваш код контроллера должен быть изменен как:

Также вы должны использовать два отдельных вида в этом случае для добавления и редактирования, чтобы избежать засорения кода. Поскольку в случае добавления ученики будут представлять собой массив объектов, а в случае редактирования это будет единственный объект, в котором вы не сможете использовать ng-repeat, поскольку он не работает

app.controller('MainCtrl', function($scope, $modalInstance, students) {

    //students variable contains information about the student to be edited, so your code should be something like this
    if(students.classname !== undefined){
         $scope.students = students;   
    }else{
         $scope.students = [];
    }

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

    $scope.addNewStudent = function() {
        $scope.students.push({
            classname: "",
            firstname: "",
            lastname: ""
        });
    };
    $scope.removeStudent = function() {
        var lastItem = $scope.students.length - 1;
        $scope.students.splice(lastItem);
    };

     $scope.save = function() {
        $modalInstance.close($scope.students);
         //make sure to save this when modal closes in the variable you are returning students from when modal is triggered
    };

    $scope.delete = function() {
        $scope.info['deleted'] = 1;
        $modalInstance.close($scope.students);
    };

    $scope.cancel = function() {
        $modalInstance.dismiss('cancel');
    };
});
  • 0
    я обновил свой код и добавил модальный экземпляр.
  • 0
    Что вы пытаетесь достичь в приведенном выше коде в разрешениях и .then (), не могли бы вы объяснить?
Показать ещё 3 комментария

Ещё вопросы

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