将参数从Angularjs控制器传递到$ stateProvider

时间:2016-05-06 06:53:15

标签: angularjs angularjs-directive angularjs-scope angular-ui-router

这是我的Angularjs .config文件,只要使用ui-router从另一个html激活'tasks',就会打开lead.html页面。

    App
        .config(['$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider){


            $stateProvider
            .state('tasks', {

                templateUrl: {{name}}.html,
                controller:"TasksController"
            });


        }]);

这是我的Taskscontroller.js

    App
        .controller(
                "TasksController", [function($scope, $http,$window) {


            var self = this;
            self.name = 'lead'; // I wanna use this parameter in templateUrl
            console.log("In tasks Controller");

        }]);

我想从TasksController中获取templateUrl参数,以便根据TasksController中的参数设置重定向到相关页面。 请指导我如何做到这一点。

由于

1 个答案:

答案 0 :(得分:0)

您可以尝试使用$ stateParams:

App.config(['$stateProvider', '$urlRouterProvider', '$stateParams', function($stateProvider, $urlRouterProvider, $stateParams) {

  $stateProvider
    .state('tasks', {
      params: {
        page: null
      },
      templateUrl: {{$stateParams.page}}.html,
      controller: "TasksController"
    });
}]);

然后在你的控制器中:

App.controller("TasksController", [function($scope, $http, $window, $stateParams, $state) {
  var self = this;
  self.$stateParams.page = 'some_url.html';
  self.$state.go('tasks');
}]);

也不要忘记控制器中的注射。 Haven没有对此进行测试,但您可能需要$ state这样:

self.$state.go('tasks', { page: 'some_url.html' }, { });