工厂的角度变量?

时间:2016-03-12 18:31:44

标签: angularjs

在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之前,因此值是未定义的。

在承诺完成后,我怎样才能将价值交给我的工厂?

1 个答案:

答案 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
    };
});