2016-03-12 2 views
0

В Угловом приложении у меня есть несколько вызовов в службу WebAPI.Угловая переменная на заводе?

Первый вызов, который вызывает вызов call1, должен определять значение true/false переменной.

Так у меня есть этот

vm.call1.$promise.then(function (data) { 
    $rootScope.variable1 = data.variable; 
}); 

Эта переменная будет использоваться внутри завода я есть;

myApp.factory('myStore', function ($http, $q, $rootScope) { 
    var showAll = $rootScope.variable1; 

    var get = function() { 
     if (showAll) { 
      //do this 
     } else { 
      //do this 
     } 
    }; 

    return { 
     get: get 
    }; 
}); 

Моя проблема в том, что завод выше загружен на PageLoad, и перед обещанием, и, следовательно, значение не определено.

Как я могу получить стоимость на моей фабрике после того, как обещание будет завершено?

+0

Добавить $ watch на $ rootScope.variable1 или поместить заводской вызов в $ prom. – NMSL

ответ

2

Нет Пример rootscope: Вы можете установить флаг SHOWALL вручную:

vm.call1.$promise.then(function (data) { 
    myStore.setShowAll(data.variable); 
}); 

и на заводе:

myApp.factory('myStore', function ($http, $q) { 
    var showAll = 'true or false to be a default'; 

    var get = function() { 
     if (showAll) { 
      //do this 
     } else { 
      //do this 
     } 
    }; 

    var setShowAll = function(value) { 
     showAll = value; 
    }; 

    return { 
     get: get, 
     setShowAll: setShowAll 
    }; 
}); 

Rootscope пример: Если вы по какой-то причине действительно нужно используйте $ rootScope для этого, вы можете просто проверить значение $ rootScope, когда вы получаете, вам не нужно сохранять значение в varibale.

myApp.factory('myStore', function ($http, $q, $rootScope) { 

    var get = function() { 
     if ($rootScope.variable1) { 
      //do this 
     } else { 
      //do this 
     } 
    }; 

    return { 
     get: get 
    }; 
}); 
+0

Пятно на! Большое спасибо! :) – brother