将$ routeProvider路径传递给另一个函数

时间:2013-10-07 17:39:53

标签: javascript angularjs

我对Angularjs很新。

我需要做的是将$routeProvider用于视图的路径传递给其他javascript函数currentPath()。下面是routeProvider的测试代码,但不确定如何将路径传递给另一个框架中的函数currentPath()

var demoApp = angular.module('demoApp',[]);

demoApp.config(function ($routeProvider) {      
    $routeProvider
        .when('/',
            {
                controller: 'SimpleController',
                templateUrl: 'Partials/View1.html'
            })
        .when('/view2',
            {
                controller: 'SimpleController',
                templateUrl: 'Partials/View2.html'
            })
        .otherwise({redirectTo: '/'});
    });

1 个答案:

答案 0 :(得分:0)

好吧,

你在哪里需要这条路? AngularJS围绕(主要)构建依赖注入(DI)的概念。

因此,如果您需要在为该路由执行的控制器函数中当前处于活动状态的路径,请查看$location

function SimpleController($scope, $location) {
  console.log($location.path()); //the current path

  //assign the path to the scope
  $scope.path = $location.path();
}

这里发生的是您在需要时注入$location。通过将其归因于$scope,您可以在当前使用的部分中访问它。有关详细信息,请查看文档here

编辑:

假设您有一个可用于控制器的外部函数,可能是对象的一部分(即框架),我们称之为A

var A;
A = {
  currentPath: function(path) {
    //do something with the path
  }
}

//as long as a is available in the scope surrodung your controller, this should work
function SimpleController($scope, $location) {
  $scope.$on("$locationChangeSuccess", function(newValue, oldValue) {
    //this will be triggered after a location has changed,
    //other event to be tried out can be:
    // * $routeChangeStart
    // * $routeChangeSuccess
    // * $locationChangeStart
    A.currentPath($location.path());
  });

  //call it once initially
  A.currentPath($location.path());
}