在Angular应用程序中,我有几次调用WebAPI服务。
第一个调用,我们称之为call1,应该确定变量的真/假值。
所以我有这个
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上加载的,在promise之前,因此值是未定义的。
在承诺完成后,我怎样才能将价值交给我的工厂?
答案 0 :(得分:2)
没有rootcope示例:您可以手动设置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值,就不必将值存储在变种。
myApp.factory('myStore', function ($http, $q, $rootScope) {
var get = function () {
if ($rootScope.variable1) {
//do this
} else {
//do this
}
};
return {
get: get
};
});