AngularJS 回调时不显示烤面包机

AngularJS Toaster does not show on callback

我正在使用 AngularJS 烤面包机来显示吐司消息。但是我似乎无法让它与回调的结果一起工作,我真的不知道为什么。

我已经为烤面包机创建了一个服务:

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');
            });

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

$数据库服务:

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
            });
        }
    };
}]);

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

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

您可以在 $.ajax 到 运行 摘要的回调中调用 $scope.$apply()