AngularJS Toaster在回调中不显示

时间:2015-09-23 22:07:05

标签: javascript angularjs callback

我正在使用AngularJS Toaster来显示Toast消息。但我似乎无法通过回调得到它,我真的不知道为什么。

我为Toaster创建了一项服务:

service.factory('$toasterservice', ['toaster',
    function (toaster) {
        return {
            'show': function (type, title, text) {
                return toaster.pop({
                    type: type,
                    title: title,
                    body: text,
                    showCloseButton: false
                });
            }
        };
    }]);

这段代码在我的控制器中:

$scope.submit = function (db) {

            var params = {
                username: db.credentials.username,
                password: db.credentials.password,
                database: db.name,
                hostname: db.host,
                port: db.port
            };

            $dbservice.testConnection(params, function (response) {
                if (response.error)
                {
                    console.log(response.error)
                }
                else
                {
                    console.log('correct!');                    
                }
            });

        };

每当我把这行代码放在一边:

$toasterservice.show('error', 'TITLE', 'BODY');

在控制器级别范围内,它完全正常。

我什么时候尝试使用它:

$dbservice.testConnection(params, function (response) {
             //HERE $toasterservice.show('error', 'TITLE', 'BODY');
            });

它不起作用,我该如何解决这个问题?我似乎无法理解为什么会这样。

$ dbservice:

service.factory('$dbservice', ['$constants',
function ($constants) {

    return {
        'testConnection': function (params, callback) {               

            $.ajax({
                url: $constants.URL_TEST_CONNECTION,
                dataType: 'json',
                type: 'post',
                contentType: 'application/x-www-form-urlencoded',
                data: params,
                success: callback,
                error: callback
            });
        }
    };
}]);

1 个答案:

答案 0 :(得分:2)

问题是使用$.ajax,您应该切换到使用$http

更改范围的角度核心之外发生的任何事件都需要通知角度,以便它可以在视图中运行摘要。

您可以在$scope.$apply()的回调中致电$.ajax来运行摘要