【问题标题】:How to send value of variable from controller to config function?如何将变量的值从控制器发送到配置函数?
【发布时间】:2017-02-01 15:56:41
【问题描述】:

我的代码...

配置函数

 config.$inject = ['$routeProvider', '$locationProvider'];
function config($routeProvider, $locationProvider ) {

    $routeProvider
        .when('/', {
            controller: 'LoginController',
            templateUrl: 'pages/login.view.html',
            controllerAs: 'vm'
        })
        .when('/datepicker', {
            controller: 'DatepickerController',
            templateUrl: 'pages/datepicker.view.html',
            controllerAs: 'vm'
        })
         .when('/password', {
            controller: 'PasswordController',
            templateUrl: 'pages/password.view.html',
            controllerAs: 'vm'
        })
         .when('/datatable', {
            controller: 'DatatableController',
            **templateUrl:  "I WANT TO GET HERE"**
            controllerAs: 'vm'
        })
        .otherwise({ redirectTo: 'pages/login.view.html' });

}

控制器

(function () {

angular
    .module('app')
    .controller('DatepickerController', DatepickerController);
DatepickerController.$inject = ['$location',  'UserService', '$rootScope'];
function DatepickerController($location,  UserService, $rootScope) {

frm.submit(function(ev) {
    var eCode=123;
    var start_date = $('#start_date').val();
    var end_date = $('#end_date').val();    
    var start_date = new Date($('#start_date').val());
    var sDate = start_date.getTime();
    var end_date = new Date($('#end_date').val());
    var eDate = end_date.getTime();
    $location.path('/datatable');
    var path="pages/datatable.view.html?ecode="+eCode+"&sDate="+sDate+"&eDate="+eDate;//**I want to send this url to routeprovider**        
    ev.preventDefault();
});

}
})();

我无法在配置函数中访问 $rootScope...

我需要将此 url(在路径变量中)分配给 routeProvider 中的 templateUrl...

如何将该 url 发送到配置函数?

任何想法...

【问题讨论】:

标签: angularjs


【解决方案1】:

在您的控制器中创建一个工厂并将url 分配给该工厂方法,然后在配置中在 templateUrl 函数中返回路由器 url。

TemplateUrl 也可以是一个返回 url 的函数。它需要一个预设参数 stateParams,它是不注入的。

     .when('/datatable', {
        controller: 'DatatableController',
        templateUrl:  function(Mconfig){
          return Mconfig.getUrl(); //config.getUrl is service method to return the url
        }
        controllerAs: 'vm'
    })

样品工厂

factory('Mconfig', function() {
    return {
        var url;
        getUrl: function() {
            return url;
        },
        setUrl: function(_url) {
            url = _url
        }
    }
})

你的控制器

frm.submit(function(ev) {
    var eCode=123;
    var start_date = $('#start_date').val();
    var end_date = $('#end_date').val();    
    var start_date = new Date($('#start_date').val());
    var sDate = start_date.getTime();
    var end_date = new Date($('#end_date').val());
    var eDate = end_date.getTime();
    var path="pages/datatable.view.html?ecode="+eCode+"&sDate="+sDate+"&eDate="+eDate;//**I want to send this url to routeprovider**       

Mconfig.setUrl(path); 


    $location.path('/datatable');


    ev.preventDefault();
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    相关资源
    最近更新 更多