2015-09-22 3 views
0

Я использую службу q в одном из моих контроллеров, чтобы убедиться, что мои запросы заканчиваются, прежде чем связывать ответы в предложении then. Теперь вот сложная часть. Существует директива на странице, где шаблон обновляет переменную области видимости. Эта переменная области используется для переключения между различными частями ответа json, селектором A, если хотите. Мне нужно обновить переменную, установленную в предложении then после загрузки страницы. Он задается идентификатором, добавленным в директиве. Я не могу найти эффективный способ обновить их.Угловое изменение переменных области после возврата с обещания

$scope.selector = {}; //property added from a child scope 
$q.all({ 
    //some factory calls and assignment to properties 
}).then(function(responses){ 
    //scope variable assignments off of the responses object. 
    //some assignment that uses the selector. a[selector.id] ex. 
    }, function(err){ 
    $log.error(err); 
    }).finally(function(){ 
     //some setting of load params 
    }); 
    //Then I need to update those variables set in the then based on whether or not the selector id was changed in the directive template. 

Любая помощь была бы принята с благодарностью.

+1

Вы опубликовали весь вопрос? Я не уверен, что понимаю, что у вас есть, или чего не хватает. – azium

+0

@azium только что обновленный вопрос. Спасибо! – Hunterrex

+2

Я до сих пор не понимаю, чего вы пытаетесь достичь. – zszep

ответ

0

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

$scope.selector = {}; //property added from a child scope 
$scope.responses = {}; 
$q.all({ 
    //some factory calls and assignment to properties 
}).then(function(responses){ 
    //scope variable assignments off of the responses object. 
    //some assignment that uses the selector. a[selector.id] ex. 
    $scope.responses = responses; 
}, function(err){ 
    $log.error(err); 
}).finally(function(){ 
    //some setting of load params 
}); 
// Use something like $watch here and have it call a function 

Watchers in AngularJS также может быть полезен.

+0

Работал отлично. Извините за довольно расплывчатый. Большое вам спасибо за вашу помощь. – Hunterrex

+0

Не проблема. Разум, обозначающий это как решаемый, если он работает на вас? – karrde00

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