Angularjs 在角度控制器中使用过滤器/对象的更好方法?

Angularjs 在角度控制器中使用过滤器/对象的更好方法?,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我正在设置一个rootScope变量来维护程序的状态。这是可行的,但我认为它不太“正确”。有没有更好的方法从数组中选择对象 这是我目前的密码 angular.module('myApp.controllers', []) .controller('packingCtrl', ['$scope', '$http', '$filter', '$rootScope', function($scope, $http, $filter, $rootScope) { $http.get('data/

我正在设置一个rootScope变量来维护程序的状态。这是可行的,但我认为它不太“正确”。有没有更好的方法从数组中选择对象

这是我目前的密码

angular.module('myApp.controllers', [])
.controller('packingCtrl', ['$scope', '$http', '$filter', '$rootScope', function($scope, $http, $filter, $rootScope) {
    $http.get('data/trayData.json').success(function(data) {
        $scope.trays = data;
    });
    var currentOrder = $rootScope.currentlyPacking;;
    $http.get('data/orderData.json').success(function(data) {
        $scope.orders = data;
        $scope.current = $filter('filter')($scope.orders, {orderId: currentOrder});
    });
}])

提前感谢您提供的任何见解/最佳实践。

您可以创建一个服务来保存您的状态。每个服务实例都是一个单例,因此当服务注入到各个控制器中时,所有实例都将看到相同的状态

var currentlyPackingSvc = function($http) {
    var currentlyPacking = {

    }

    return {
        currentlyPacking: currentlyPacking,
        getTrays: function() { /* make $http call and update currentlyPacking */ },
        getOrders: function() { /* make $http call and update currentlyPacking */  }
    }
}

angular.service('currentlyPackingSvc', ['$http', currentlyPackingSvc]);

angular.controller('packingCtrl', ['$scope', '$http', '$filter', '$rootScope', 'currentlyPackingSvc'
                     function($scope, $http, $filter, $rootScope, currentlyPackingSvc) {
    ...
    var currentOrder = currentlyPackingSvc.currentlyPacking;
    ...
}]);
假设您将“currentlyPacking”属性保留为对象,则更改应自动推送到您的范围内

这样,您的所有状态都被隔离到一个可以在任何地方使用的服务