调用注销时更改服务中的变量值

时间:2017-10-30 21:59:25

标签: angularjs angularjs-service angularjs-controller

我有设备服务和设备控制器。首先,无论何时调用控制器,我都会调用setter方法来设置一个布尔值。我想在调用logout函数时更改该值,该函数位于不同的服务中。 我的设备服务

define([], function () {

    'use strict';

    var DeviceService = [
        "AuthService",
        function (AuthService) {
            var Device_Create = false;
            return {

                setUserCreatePermission :function () {
                    if(AuthService.checkForPermission('Device_Create')){
                        Device_Create = true;
                    }
                },
                getUserCreatePermission : function () {
                    return Device_Create
                }
            }
        }];

    return DeviceService;

})

我的设备控制器有一个init方法,用于调用设备服务中的setter方法。我设置了一个范围变量。如果设置,它将调用该方法,否则不会。

define([], function () {
    'use strict';

    var DeviceListCtrl = ["$rootScope", "$scope", "DeviceService",
        function ($rootScope, $scope, DeviceService) {

            //variables

            $scope.deviceList_init = true;
            $scope.Device_Create = false;

            init();

            if(DeviceService.getDeviceCreatePermission()){
                $scope.Device_Create = true;
            }

            function init() {
                if($scope.deviceList_init){
                    DeviceService.setDeviceCreatePermission();
                }
                $scope.deviceList_init = false;

            }

        }]


    return DeviceListCtrl;
});

有人能帮助我吗? TIA。我是这个新手

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解你的问题,但似乎你试图控制两个不同的变量来做同样的事情 - 一个在控制器中,另一个在服务中。

如果要在不同的控制器之间使用变量,则应在服务/工厂中处理。

如果您想通知其他控制器变量已在某处更改,您可以使用$ rootScope。$ broadcast或$ scope。$ broadcast,具体取决于它是否在您所需的范围内。