2013-08-04 2 views
0

В угловом режиме обычно используется внутри , затем методу обещания, которое необходимо внести в область видимости, что требует, чтобы вы обернули свой код в пределах $ scope. $ Apply (.. .). мне было интересно, если и как обещания может быть расширена, чтобы обеспечить thenapply функцию, которая не требует от вас больше, чтобы сделать упаковку, поэтому вместоangularjs продлить обещание с помощью thenapply

myPromise.then(function() { $scope.$apply(function(data) { $scope.message=data.message; }) }); 

вы могли бы написать:

myPromise.thenapply(function() { $scope.message=data.message; }); 

ответ

0

Если myPromise является угловым $q обещание не нужно звонить $scope.$apply вообще как then обратный вызов выполняется в угловом «мире», а изменения в сфере распространения распространяются на всех его «наблюдателей».

Конечно, я предполагаю, что вы решили свое обещание в угловом цикле $ digest. Если нет, вам нужно позвонить $apply при решении обещаний.

Если myPromise - это реализация различных обещаний, вам всегда нужно называть $ scope. $ Применять при разрешении так же, как с любым другим действием, выполняемым вне углового «мира», поскольку угловой ничего не знает об этом.

Я бы не добавил thenapply способ обещать, как для меня, он поощряет плохой стиль работы с угловыми, просто добавьте $apply позвонить где-нибудь, где вы разрешаете обещание, если оно находится вне углового цикла $ digest.

+0

Это обещание jquery, которое отправляется из библиотеки signalr. Поэтому я не контролирую это. – rekna

+0

jQuery для конвертера углового обещания, возможно, решение, но он не знал бы, как писать код. Тогда можно было бы написать: .convert (jqueryPromise). Then (function() {....}) – rekna

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