Javascript 角度范围单态

Javascript 角度范围单态,javascript,angularjs,angular-ui-router,singleton,angular-promise,Javascript,Angularjs,Angular Ui Router,Singleton,Angular Promise,我有一个控制器: class Ctrl{ constructor($http, $scope, $stateParams){ if(!$scope.items){ $http.get(...).then((res)=> { $scope.items = res.data; }); } if($stateParams.id){ $scope.currItem = $scope.items[$statePra

我有一个控制器:

class Ctrl{
  constructor($http, $scope, $stateParams){
    if(!$scope.items){
      $http.get(...).then((res)=> {
        $scope.items = res.data;
      });
    }

    if($stateParams.id){
        $scope.currItem = $scope.items[$statePrams.id];
    }
}
我有两个州:

.state('dashboard.items', {
    url: '/items',
    templateUrl: 'items.html',
    controller:'Ctrl'
})
.state('dashboard.items.details', {
    url: '/:id',
    templateUrl: '/ItemDetails.html',
    controller: 'Ctrl'
})
在显示其中一个项目的详细信息之前,我希望确保项目数组已经初始化

没有代码复制怎么可能呢?(如果为else,每个内部的代码相同)

谢谢。

您可以在家长级别使用state(这就是您问题的确切答案)


或者直接使用服务并在那里进行初始化。服务是单身

使用
.state
对象文本中的
resolve
方法延迟我使用resolve尝试的控制器的实例化,但是加载列表页需要很长时间。我想显示列表页面,异步加载列表,然后加载下一个状态。我已经这样做了。问题是,现在我的列表页面将仅在列表初始化后加载。我想加载列表页面,然后加载列表项。无论如何,如果我要为子控制器使用另一个控制器,有一种方法可以从子控制器访问父控制器?查看第二个选项在angular ui route中有一种方法可以访问父控制器?(不包括我的ES6案例中的范围)