如何从控制器向配置函数发送变量值?

时间:2017-02-01 07:36:01

标签: angularjs

我的代码......

配置功能

var a = await repository.Members.FirstOrDefaultAsync(x => x.Name == "BOB"); //is true (Entity Framework Core)

var c = repository.Members.FirstOrDefault(x => x.Name == "BOB"); //is true (LINQ)

var b = "Bob" == "BOB"; //is false

控制器

 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' });

}

我无法在配置功能中访问$ rootScope ...

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

如何将该url发送到配置功能?

任何想法......

1 个答案:

答案 0 :(得分:1)

在您的控制器中创建工厂并将url分配给该工厂方法,然后在config中返回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();
});