$scope.createAccount = "Create Account";
$scope.isDisabled = false;
$scope.createUser = function(account){
user.createAccount(account);
$scope.createAccount = 'Creating Account...';
$scope.isDisabled = true;
};
[$ rootScope:inprog] http://errors.angularjs.org/1.4.4/ $ rootScope / inprog?p0 =%24dgest at angular.js:38
如果我发表评论
$scope.createAccount = 'Creating Account...';
$scope.isDisabled = true;
它没有错误,请提出什么问题
在使用中我使用此功能
function rootScoopApply($scope, fn)
{
var phase = $scope.$root.$$phase;
if (phase == '$apply' || phase == '$digest') {
if (fn && typeof fn === 'function') {
fn();
}
} else {
$scope.$apply(fn);
}
}
并将其命名为
user.rootScoopApply($rootScope, function() {
$scope.createUser = function(account){
user.createAccount(account);
$scope.createAccount = 'Creating Account...';
$scope.isDisabled = true;
}
});
答案 0 :(得分:0)
AngularJS为常见的本机JS异步行为提供包装器:
这只是一个传统的异步函数,最后调用了$scope.$apply()
,告诉AngularJS刚刚发生异步事件。
$scope.$apply()
应尽可能接近异步事件绑定。
请勿在整个代码中随意撒上。如果你在做
if (!$scope.$$phase) $scope.$apply()
这是因为你在调用堆栈中不够高。
尽可能使用AngularJS服务而不是本机服务。如果您正在创建一个AngularJS服务(例如套接字),它应该在$scope.$apply()
触发回调或广播/发射的任何地方。
例如,$rootScope.$apply($rootScope.$broadcast('receivedMsg', msg)); is valid