我有一个移动应用程序的缓存机制,它使用AngularJS从服务器下载大量JSON数据;由于数据的大小我只在一个纯文本文件中存储JSON.stringify
- ied版本,因为它太大而不适合localStorage。
我想知道从不同的视图控制器访问此数据的各个元素的最佳方法,而不是从所选的每个故障单读取文件,并从文件列表中查找故障单?
E.g。我的Comms
服务以最简单的形式显示:
angular.module('app.core')
.service('Comms', function($q, $http, Storage) {
this.getTickets = function () {
var defer = $q.deferred();
// try to read from Tickets
Storage.getFile('Tickets')
.then(function (data) {
// file found
$q.resolve(data);
}, function (err) {
// file NOT found - download (storage handled elsewhere)
// Stored in a file named 'Tickets', as above.
$http.get('https://myurl.com/getTickets');
})
.then(function (tickets) {
$q.resolve(data);
})
.catch(function (err) {
// something wrong happened
});
};
});
TicketsController
:
angular.module('mpro.core')
.controller('TicketsController', function($scope, Comms) {
$scope.tickets = [];
Comms.getTickets()
.then(function (tickets) {
$scope.tickets = tickets;
});
});
我有ng-repeat
显示所有这些票证,但不太确定如何提取单个票证,以便在我的TicketController中显示一些票证信息。
E.g。门票清单:
<div ng-repeat="ticket in tickets">
<a href="#/tickets/{{ticket.TicketID}}">
<h1>{{ticket.TicketNumber}}</h1>
<label>Name: </label>{{ticket.ContactName}}
</a>
</div>
个人票证视图:
<div ng-controller="TicketController">
<h1>{{ticket.TicketNumber}}</h1>
</div>
最后,TicketController:
angular.module('mpro.core')
.controller('TicketController', function($scope, $stateParams) {
$scope.ticket = ... // stuck here
});
我不确定如何提取个人票;我可以读取每个按下的票据的文件并搜索列表 - 但这非常低效。
我无法在控制器/路由之间传递对象吗?我无法对我的票证进行字符串化并通过参数传递它,因为对象的大小可能会增大。
只是想知道通过AngularJS做到这一点的最佳机制是什么?
答案 0 :(得分:1)
您可以使用$rootScope
查看reference
示例:
angular.module('eventExample', [])
.controller('EventController', ['$rootScope', function($rootScope) {
$rootScope.count = 0;
}]);