Javascript AngularJS是否有本机延迟$rootScope.$apply?
我写了很多这样的代码:Javascript AngularJS是否有本机延迟$rootScope.$apply?,javascript,angularjs,Javascript,Angularjs,我写了很多这样的代码: obj.bind( 'event', function(){ $rootScope.$apply( function(){ somePromise.resolve(); doSomething(); } } ); 我想把它压缩成类似于: obj.bind( 'event', deferRootScopeApply( function(){ somePromise.resolve(); doSomething
obj.bind( 'event', function(){
$rootScope.$apply( function(){
somePromise.resolve();
doSomething();
}
} );
我想把它压缩成类似于:
obj.bind( 'event', deferRootScopeApply( function(){
somePromise.resolve();
doSomething();
} );
编写这样的服务很容易,但我只是想知道是否有一种更干净的本地方式。FWIW,这是我的服务:
app.factory( 'rootApply', [ '$rootScope', function( $rootScope ){
return function( fn, scope ){
var args = [].slice.call( arguments, 1 );
// push null as scope if necessary
args.length || args.push( null );
return function(){
// binds to the scope and any arguments
var callFn = fn.bind.apply(
fn
, args.slice().concat( [].slice.call( arguments ) )
);
// prevent applying/digesting twice
$rootScope.$$phase
? callFn()
: $rootScope.$apply( callFn )
;
}
};
} ] );
然后返回一个延迟函数或可选地执行类似于fn.call的操作
:
rootApply( someFunction );
rootApply( someFunction, scope, arg1, arg2, arg3 );