如何注入$ httpParamSerializer以在templateUrl

时间:2016-03-02 19:41:20

标签: javascript angularjs angularjs-routing ngroute

我正在尝试注入$httpParamSerializer以便在templateUrl中使用,但我遇到了一些问题。没有任何好的文档和如何使用$httpParamSerializer的示例。

示例代码:

angular.module('myApp', ['ngRoute']).config(
  function($routeProvider, $locationProvider, $httpProvider) {
    $routeProvider
        .when('/data/dashboard', {
            templateUrl: function(params) {
             //NEED TO USE IT HERE
            }
        })
})

那些没有用的东西,就像这样:

function($routeProvider, $locationProvider, $httpProvider,$httpParamSerializer ) {

同样在模块中,像这样:

angular.module('myApp', ['ngRoute', '$httpParamSerializer']).config(

任何有关这不起作用的见解都会有所帮助。

2 个答案:

答案 0 :(得分:3)

由于您在配置中,您需要从提供商本身获取它。也就是说,注入提供者并致电$get

angular.module('myApp', ['ngRoute']).config(
  function($routeProvider, $locationProvider, $httpProvider, $httpParamSerializerProvider) {

    // get the serializer from the provider
    var paramSerializer = $httpParamSerializerProvider.$get();
    console.log(paramSerializer({a:1})); // test it

    $routeProvider.when('/', {
      templateUrl: function(params) {
        // you can use paramSerializer(here
      }
  });
});

你的jsfiddle的工作版本:http://jsfiddle.net/kh9oeq1y/16/

答案 1 :(得分:-1)

This forum表明你的角度版本存在问题。检查您是否使用至少1.4.0。