Angular:如何连接控制器中的范围和服务中的范围

Angular: how to connect scope in the controller and scope in services?

本文关键字:范围 控制器 服务 连接 何连接 Angular      更新时间:2023-09-26

如果我有一个控制器

angular
    .module("TestApp")
    .controller('MainCtrl', function ($scope, MyService) {
        var array = [1, 4, 5, 6];
        function remove() {
            MyService.remove('id');
            $scope.array = array;
        }
        render();
}

和一个服务

angular.module('TestApp').factory('MyService', function ($rootScope) {
    function remove(id) {
        $rootScope.array.splice(id, 1);
    }
}

但我找不到我放入控制器中$scope的数组。我在$rootScope中看不到它。我能处理这个问题吗?

您可以将$scope作为参数传递给服务方法MyService.remove

angular.module('TestApp').factory('MyService', function ($rootScope) {
    function remove(id, scope) {
        scope.array.splice(id, 1);
    }
}

但在那之后,你的服务只是一些功能的袋子。请考虑将数组存储在服务中(在cat中存储在变量中),并添加从MyService中读取、写入和删除元素的方法。通过这种方式,您将创建集合模式。