Angularjs 在角度控制器中使用过滤器/对象的更好方法?
我正在设置一个rootScope变量来维护程序的状态。这是可行的,但我认为它不太“正确”。有没有更好的方法从数组中选择对象 这是我目前的密码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/
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”属性保留为对象,则更改应自动推送到您的范围内
这样,您的所有状态都被隔离到一个可以在任何地方使用的服务