Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 工厂里的角度变量?_Angularjs - Fatal编程技术网

Angularjs 工厂里的角度变量?

Angularjs 工厂里的角度变量?,angularjs,Angularjs,在Angular应用程序中,我有几个对WebAPI服务的调用 第一个调用调用call1,应该确定变量的真/假值 所以我有这个 vm.call1.$promise.then(function (data) { $rootScope.variable1 = data.variable; }); 该变量将在我拥有的工厂内使用 myApp.factory('myStore', function ($http, $q, $rootScope) { var showAll = $rootS

在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上加载的,并且在承诺之前加载的,因此该值是未定义的


承诺完成后,我如何才能将值转移到我的工厂?

无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值时检查$Rootscope值,就不必将该值存储在变量包中

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

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

    return {
        get: get
    };
});

无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值时检查$Rootscope值,就不必将该值存储在变量包中

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

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

    return {
        get: get
    };
});

在$rootScope.variable1上添加$watch,或将工厂调用放在$promise内。在$rootScope.variable1上添加$watch,或将工厂调用放在$promise.Spot内!非常感谢!:)完全正确非常感谢!:)