我在.run中动态创建我的路线:
.run(function($http, $rootScope) {
var mainInfo = null;
$http.get('thegoods.json').success(function(data) {
$rootScope.HomeGateway = data.HomeGateway;
var pages = $.merge($rootScope.HomeGateway.questions, $rootScope.HomeGateway.messages);
for (var i = 0; i < pages.length; i++) {
$routeProviderReference.when(pages[i].url, {
templateUrl: pages[i].view,
controller: pages[i].controller,
data: pages[i].data
})
}
});
如何访问数据(定义为数据:上面的pages [i] .data)。请注意,我不确定这是否完全正确 - 但它应该作为我想要完成的事情的演示。
基本上,我抓住一个JSON文件并将其存储在$ rootScope中。然后我使用$ rootScope动态创建所有URL。 (如果您有兴趣自己这样做,请参阅http://blog.brunoscopelliti.com/how-to-defer-route-definition-in-an-angularjs-web-app/)我希望能够访问特定于某些页面的数据,而无需再次搜索JSON数据。我知道这是一个廉价的操作,但如果可能的话,我想以正确的方式做到这一点。
另一种表达我的问题的方法是..如何在应用首次启动时定义.run的每个页面$ scope?
答案 0 :(得分:0)
如果所有内容都是article, you share中写的,并且我正确理解了您想要的内容,那么您应该使用resolve
函数的.when
选项$routeProviderReference.when(pages[i].url, {
templateUrl: pages[i].view,
controller: pages[i].controller,
resolve: {
data: function(){
return pages[i].data;
}
}
});
}。并写如:
function QuestionController($scope, data) {
$scope.data = data.someProp;
}
然后在控制器中:
{
JOBS: [
{
symbol: "JOBS",
timestamp: "2013-10-01T00:00:00-04:00",
tradingDay: "2013-10-01",
open: 36.65,
high: 40,
low: 34.34,
close: 38.95,
volume: 56687,
openInterest: null
},
{
symbol: "JOBS",
timestamp: "2014-01-01T00:00:00-05:00",
tradingDay: "2014-01-01",
open: 38.585,
high: 43,
low: 34.57,
close: 35.625,
volume: 89786,
openInterest: null
}
...