簡體   English   中英

將參數從Angularjs控制器傳遞給$ stateProvider

[英]Pass parameter from Angularjs controller to $stateProvider

這是我的Angularjs .config文件,每當使用ui-router從另一個HTML激活“任務”時,該文件都會打開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");

        }]);

我想讓templateUrl從TasksController接受參數,以便它根據TasksController中設置的參數重定向到相關頁面。 請指導我如何執行此操作。

謝謝

您可以嘗試使用$ 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');
}]);

也不要忘記在控制器中進行注射。 還沒有測試過,但是您可能需要$ state像這樣:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM