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()
我正在使用 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()