我有一个像这样的控制器: -
appControllers.controller("TaskAddController", function ($scope, $http) {
$scope.task = {};
$scope.messages = {};
$scope.actions = {
save : function() {
$http.post("/ajax/tasks/save", $scope.task)
.then(function() {
$scope.messages.success = true;
$scope.task = {};
setTimeout(function () {
$scope.messages.success = false;
}, 3000);
});
}
};
});
视图如下: -
<div data-ng-controller="TaskAddController">
<div data-ng-show="messages.success">Task Added</div>
<div>
<input data-ng-model="task.title" type="text" placeholder="Title...."/>
</div>
<div>
<textarea data-ng-model="task.description" placeholder="Description..."></textarea>
</div>
<div>
<input data-ng-click="actions.save()" type="submit" value="add"/>
</div>
</div>
我要做的是在完成AJAX请求时我要显示包含任务添加的div
,然后在3秒后它消失了第一部分正在工作,例如当AJAX请求完成时会出现div,但即使我的setTimeout肯定发生了,div
也没有消失。
现在从我的研究中我认为这是因为我需要获得Angular摘要。所以我尝试了以下方法: -
setTimeout(function () {
$scope.messages.success = false;
$scope.apply();
}, 3000);
但这似乎没有什么区别。我错过了什么?
答案 0 :(得分:7)
您应该使用$timeout
。
$timeout(function () {
$scope.messages.success = false;
}, 3000);
注意:您需要在控制器中注入$timeout
。