0

我对 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: '/'});
    });
4

1 回答 1

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您可以在当前使用的部分中访问它。有关更多信息,请查看此处的文档。

编辑:

假设您有一个可供控制器使用的外部函数,可能是对象的一部分(即框架),我们称之为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());
}
于 2013-10-07T17:46:56.033 回答