Angular $timeout 不更新视图
Angular $timeout doesn't update the view
在我的控制器中,我有一个方法可以向我的 REST API 发送 POST 请求。在 success/error 上,我想使用 ng-show
显示一条 success/error 消息。问题是我的范围变量已更改,但我的视图未更新。
我曾尝试使用 $scope.$apply()
但会引发 $digest
错误。
以下是我当前的代码。有什么想法吗?
function AdminController($scope, $http, $timeout) {
$scope.addUserError = false;
$scope.addUserSuccess = false;
$scope.createUser = function (newuser) {
$http.post("rest/user", JSON.stringify(newuser)).success(function () {
console.log("User added");
$timeout(function () {
$scope.addUserSuccess = true;
$scope.addUserError = false;
});
}).error(function () {
$timeout(function () {
$scope.addUserSuccess = false;
$scope.addUserError = true;
console.log($scope.addUserError); //true
});
})
}
}
将您的代码更新为以下内容:
function AdminController($scope, $http, $timeout) {
$scope.addUserError = false;
$scope.addUserSuccess = false;
$scope.createUser = function (newuser) {
$http.post("rest/user", JSON.stringify(newuser)).success(function () {
$scope.addUserSuccess = true;
$scope.addUserError = false;
}).error(function () {
$scope.addUserSuccess = false;
$scope.addUserError = true;
});
};
}
您的视图应如下所示:
<div ng-show="addUserSuccess">User Added!</div>
<div ng-show="addUserError">Error adding user</div>
这里不需要超时。这只是一个简单的模型更新,angular 将在 $http 调用中自动为您执行此操作。
在我的控制器中,我有一个方法可以向我的 REST API 发送 POST 请求。在 success/error 上,我想使用 ng-show
显示一条 success/error 消息。问题是我的范围变量已更改,但我的视图未更新。
我曾尝试使用 $scope.$apply()
但会引发 $digest
错误。
以下是我当前的代码。有什么想法吗?
function AdminController($scope, $http, $timeout) {
$scope.addUserError = false;
$scope.addUserSuccess = false;
$scope.createUser = function (newuser) {
$http.post("rest/user", JSON.stringify(newuser)).success(function () {
console.log("User added");
$timeout(function () {
$scope.addUserSuccess = true;
$scope.addUserError = false;
});
}).error(function () {
$timeout(function () {
$scope.addUserSuccess = false;
$scope.addUserError = true;
console.log($scope.addUserError); //true
});
})
}
}
将您的代码更新为以下内容:
function AdminController($scope, $http, $timeout) {
$scope.addUserError = false;
$scope.addUserSuccess = false;
$scope.createUser = function (newuser) {
$http.post("rest/user", JSON.stringify(newuser)).success(function () {
$scope.addUserSuccess = true;
$scope.addUserError = false;
}).error(function () {
$scope.addUserSuccess = false;
$scope.addUserError = true;
});
};
}
您的视图应如下所示:
<div ng-show="addUserSuccess">User Added!</div>
<div ng-show="addUserError">Error adding user</div>
这里不需要超时。这只是一个简单的模型更新,angular 将在 $http 调用中自动为您执行此操作。