角度ui-router状态如何调用控制器

时间:2016-09-12 17:29:11

标签: angularjs angular-ui-router

我看到人们在网上发布关于使用Angular ui-router的内容,我看到这些类型的代码没有明确地显示控制器名称,所以它甚至如何知道如何调用控制器?

state('new-rp', {
  url: '/new/:portfolioId',
  templateUrl: 'new.html',
  controller: function($scope, $stateParams) {
  $scope.portfolioId = $stateParams.portfolioId;
  }
})

我的TRIED代码没有像上面那样列出控制器

.state("deviceDetail", {
        url: "/devices/:DeviceId",  // param is required which specific device id
        templateUrl: "app/devices/deviceDetailView.html",  // ui elements 
        controller: function($scope,$stateParams) {
            $scope.DeviceId = $stateParams.DeviceId;
        }

    });

问题是控制器没有被击中

但是这段代码明确地使用了控制器名称并且控制器被命中,因此我遇到了这种类型的代码如何命中控制器的问题

controller: function($scope,$stateParams) {
            $scope.DeviceId = $stateParams.DeviceId;
        }

它如何知道?(对我不起作用)

1 个答案:

答案 0 :(得分:0)

您可以在UI路由器状态中以两种方式声明控制器:

//1
.state('new-rp', {
  url: '/new/:portfolioId',
  templateUrl: 'new.html',
  controller: function($scope, $stateParams) {
  $scope.portfolioId = $stateParams.portfolioId;
  }
})

//2
 .state('new-rp', {
  url: '/new/:portfolioId',
  templateUrl: 'new.html',
  controller: PortfolioController
})
.
.
.
//PortfolioController definition

在方法#1中,您的控制器是为您内联创建的,而在#2中,UI路由器正在寻找一个名为PortfolioController的显式声明的控制器