Зачем мне нужен $ scope. $ Digest в Promise

0

Все:

Я новичок в угловом дайджесте, прямо сейчас, когда я использую Promise, в его тогда функции я должен использовать $ scope. $ Digest(), чтобы изменение переменной области вступало в силу в другом месте, например:

Здесь я использую Promise для эмуляции запроса $ http, моя путаница в $ scope.getdata, поэтому мне нужно вызвать $ scope. $ Digest(), я думал, что $ scope.disable следует смотреть угловым автоматически.

var app = angular.module("vp", []);
app
    .service("srh", function($http){
        var busy = false;
        this.get = function(url){
            if(!busy){
                busy = true;
                var p = new Promise(function(res, rej){
                            $timeout(function(){
                                res("data is fetched");
                            }, 3000);
                        })
                        .then(function(data){
                            busy = false;
                            return data;
                        }, function(data){
                            busy = false;
                            return data;
                        });
                return p;
            }else {
                return null;
            }
        }
    })// end of service
    .controller("main", function($scope, srh){
        $scope.disable = false;
        $scope.getdata = function(){
            var dp = srh.get("");
            if( dp ) {
                $scope.disable = true;
                dp.then(function(data){
                    console.log(data);
                    $scope.disable = false;
                    $scope.$digest()
                })
            }
        }
    })
Теги:
angular-digest

1 ответ

2
Лучший ответ

Используйте $q угловые обещания, которые будут внутренне обрабатывать все требования к дайджесту.

Всякий раз, когда вы используете события за пределами углового ядра, которые изменяют область действия, вам нужно указать угловое значение, чтобы оно могло обновлять вид

  • 0
    Спасибо, я довольно новичок в этом, не могли бы вы перечислить, какую ситуацию можно отнести к этим «событиям»?
  • 1
    сторонние библиотечные события, события dom, собственные обещания, собственные таймеры, такие как setTimeout или такие, как postMessage. Все, что не является частью углового API
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню