2013-12-11 4 views
2

У меня есть сценарий, когда я хочу выпустить сообщение XHR на сервер. Я не хочу запускать $ rootScope. $ Digest(), делая это. Я знаю, что могу вручную создать свой собственный XMLHttpRequest, чтобы сделать то же самое, но я чувствую, что по умолчанию должен быть способ сделать это внутри angularjs.Угловой запрос выполнения XHR без запуска дайджеста

У кого-нибудь есть мысли?

+0

не используя '$ .ajax' вне' $ http' работы просто отлично? – bevacqua

+0

Это требует от вас зависимости от jquery, на которую я верю. –

+0

Проверьте [$ http: 991] (https://github.com/angular/angular.js/blob/master/src/ng/http.js#L991), единственный способ обойти его - $ rootScope. $$ phase' _ (чрезвычайно fugly hack) _, используя внешнюю библиотеку для ее выполнения или просто не заботясь о том, запускает ли запрос цикл '$ digest'. Последний - это то, за что ты должен стрелять. – bevacqua

ответ

1

Заканчивать $http:991, единственный способ обойти это превращается в $rootScope.$$phase(а очень Fugly взломать), используя внешнюю библиотеку для ее выполнения, или просто не заботясь о том, вызывает ли запрос на $digest цикл. Последний - это то, за что ты должен стрелять.

Либо используйте внешнюю библиотеку, либо получите прямо nasty.

$rootScope.$$phase = true; 
$http.get('/foo').success(function() { 
    $rootScope.$$phase = false; 
}); 

Очевидно не, как Рекомендуемые много неожиданных вещей может случиться, так что. Да, внешняя библиотека.

То, что вы действительно должны делать это не считая обходящий всей точки Angular.js

+0

Я согласен с идеей не пытаться обойти угловые. Я должен уметь применять наш подход к работе с $ http. Просто подумал, что с ним подойдет. Пожарайте запрос, который не имеет другого эффекта. Огонь и забыть. Похоже, что был бы способ сделать это, что не слишком навязчиво. –

Смежные вопросы