如何处理警报消息中的多个超时

时间:2015-01-19 09:43:48

标签: angularjs twitter-bootstrap

我在处理显示警报消息的多个超时时遇到问题。在我的应用程序中,我在创建任务,播放任务,暂停任务和删除任务时收到几条警报消息。我使用$ timeout()将所有警报的超时设置为5000。

这是创建任务::

的代码
$scope.create = function () {
        console.log('Taskkkkkkkkkk Title create function is called : ');
        for (var i = 0; i < $scope.tasks.length; i++) {
            if ($scope.tasks[i].title === this.title) {
                $scope.duplicateTitle = true;
                return;
            }
        }
        var task = new Tasks({
            'title': this.title,
            'description': this.description,
            'duration': 0,
            'lastStart': '',
            'archive': false,
            'active': true
        });

        console.log('Taskkkkkkkkkk Title : ' + task.title);
        if (task.title) {
            task.$save(function (response) {
                $scope.alerts.push({
                    type: 'success',
                    msg: 'Task have been Added!!' + '&nbsp&nbsp&nbsp<button type="button" class="close" data-dismiss="alert" ng-click="closeAlert()">&times;</button>'
                });

                $scope.closeAlert = function (index) {
                    $scope.alerts.splice(index, 1);
                };

                $timeout(function () {
                    $scope.alerts.splice($scope.alerts.indexOf(alert), 1);
                }, 5000);

                $scope.tasks.unshift(response);
                //$scope.tasks = Tasks.query();
                $scope.title = '';
                $scope.description = '';
                $state.go('listTasks');
            }, function (errorResponse) {
                $scope.error = errorResponse.data.message;
            });
        } else {
            var message = 'Title cannot be blank';
            $scope.error = message;
        }
    };

但是当我在5秒内单击多个任务时,最后一个任务警报消息将消失。但不是第一个,意味着它正在跟随堆栈顺序,即FIFO原则。我正在控制器中编写警报消息。

我希望任务按照它们出现的顺序消失。任何建议对我都会更有帮助。

1 个答案:

答案 0 :(得分:0)

在超时中我刚刚添加了拼接功能的索引值。

$timeout(function () {
    $scope.alerts.splice(index, 1);
}, 5000);

现在工作正常......