我有各种状态使用相同的解决方案在控制器加载之前将timeLog加载到我的控制器$ scope中。我想不重现此代码,但在这些视图之间共享它。我对JS框架很新,尤其是Angular JS。
我很难用谷歌搜索这个并没有找到任何体面的信息。也许我没有错误地搜索或没有正确地思考这个问题。有什么建议吗?
.config(function($stateProvider) {
$stateProvider
.state('tab.edit-log-summary', {
url: '/logs/edit-log-summary/:timeLogId',
views: {
'tab-logs': {
templateUrl: 'templates/logs/edit-log-summary.html',
controller: 'EditLogSummaryCtrl'
}
},
resolve: {
timeLog: function(config, $stateParams, DailyLog) {
return DailyLog.get({id: $stateParams.timeLogId});
},
}
})
.state('tab.edit-time-log', {
url: '/logs/edit-time-log/:timeLogId',
views: {
'tab-logs': {
templateUrl: 'templates/logs/edit-time-log.html',
controller: 'EditTimeLogCtrl'
}
},
resolve: {
timeLog: function(config, $stateParams, DailyLog) {
return DailyLog.get({id: $stateParams.timeLogId});
},
}
})
})
答案 0 :(得分:1)
这真的归结为vanilla Javascript。结算是对象。只需将它们定义为上面的某个对象,每次都将它传递给resolve属性。
acquire
一个建议 - 使用inline array notation来提供依赖关系。如果您缩小代码,这有助于保护您的代码免受破坏。我在上面的演示中自己做了这个,但我谨慎地保留它。