我正在尝试找到一种方法来最小化jsonp请求,因为angular不会缓存这些请求。我的方法是将每个控制器中的空数组设置为一个主控制器,当它连接到主体时加载一次。之后,我将检查数组是否为空,如果是,则使用该服务并返回json。 我现在的问题是,由于某种原因,我不理解在服务调用之外检查时数组是空的。
示例代码
angular.module('Feed.controllers', [])
.controller('MainCtrl', function($scope)
{
function getYear()
{
var currentDate = new Date();
return currentDate.getFullYear();
}
$scope.currentYear = getYear();
$scope.StandingsList = [];
})
.controller('StandingsCtrl', function($scope, APIservice, $routeParams)
{
console.log($scope.StandingsList.length); // returns 0
if ($scope.StandingsList.length === 0)
{
APIservice.getSomtehing().success(function (response)
{
$scope.StandingsList = response.jsonData;
console.log($scope.StandingsList.length); // returns total entries
});
};
console.log($scope.StandingsList.length); // returns 0
})
MainCtrl在body标签中,因为我将currentYear用于HTML中的各个位置 使用路由和部分来调用StandingsCtrl进行演示。带有ng-view的div位于MainCtrl
的body元素内答案 0 :(得分:1)
MainCtrl的$scope
与StandingsCtrl中的$scope
不同,你可能想做类似的事情来在控制器之间共享数据
angular.module('Feed.controllers', [])
.factory('Standings', function() {
var list = [];
return {
save: function(data) { /*push data into list*/ },
list: list
}
})
.controller('MainCtrl', function ($scope, Standings) {
function getYear() {
var currentDate = new Date();
return currentDate.getFullYear();
}
$scope.currentYear = getYear();
$scope.StandingsList = Standings.list;
})
.controller('StandingsCtrl', function ($scope, APIservice, Standings) {
console.log(Standings.list.length); // returns 0
if (Standings.list.length === 0) {
APIservice.getSomething().success(function (response) {
Standings.save(response.jsonData);
$scope.StandingsList = response.jsonData;
});
}
});