我正在设置一个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});
});
}])
提前感谢任何见解/最佳做法。
答案 0 :(得分:0)
您可以创建一个服务来保存您的州。每个服务实例都是一个单例,因此当服务注入各种控制器时,所有服务器都会看到相同的状态。
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;
...
}]);
假设您离开了当前正在包装的'作为对象的属性,更改应自动推送到您的范围。
这样,您可以将所有状态隔离到一个可以在任何地方使用的服务。