在Angular UI路由器中共享解析

时间:2015-12-29 14:51:52

标签: angularjs angular-ui-router

我有各种状态使用相同的解决方案在控制器加载之前将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});
      },
    }
  })

})

1 个答案:

答案 0 :(得分:1)

这真的归结为vanilla Javascript。结算是对象。只需将它们定义为上面的某个对象,每次都将它传递给resolve属性。

acquire

一个建议 - 使用inline array notation来提供依赖关系。如果您缩小代码,这有助于保护您的代码免受破坏。我在上面的演示中自己做了这个,但我谨慎地保留它。