Angular JS:如何/何时使用ng-click来调用路由?

假设你正在使用路由:

// bootstrap myApp.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) { $routeProvider.when('/home', { templateUrl: 'partials/home.html', controller: 'HomeCtrl' }); $routeProvider.when('/about', { templateUrl: 'partials/about.html', controller: 'AboutCtrl' }); ... 

而在你的HTML,你想要导航到关于页面,当一个button被点击。 一种方法是

 <a href="#/about"> 

…但似乎ng-click也将在这里有用。

  1. 这个假设是否正确? 用ng-click代替锚点?
  2. 如果是这样,那将如何工作? IE:

<div ng-click="/about">

路由监视$location服务并响应URL中的变化(通常通过散列)。 要“激活”路线,只需更改URL。 最简单的方法就是使用锚标签。

 <a href="#/home">Go Home</a> <a href="#/about">Go to About</a> 

没有更复杂的是需要的。 但是,如果您必须从代码执行此操作,正确的方法是使用$location服务:

 $scope.go = function ( path ) { $location.path( path ); }; 

例如,哪个button可以触发:

 <button ng-click="go('/home')"></button> 

这是一个很棒的提示,没有人提到。 在函数所在的控制器中,您需要包含位置提供者:

 app.controller('SlideController', ['$scope', '$location',function($scope, $location){ $scope.goNext = function (hash) { $location.path(hash); } ;]); <!--the code to call it from within the partial:---> <div ng-click='goNext("/page2")'>next page</div> 

使用自定义属性(用指令实现)也许是最干净的方法。 这是我的版本,基于@Josh和@ sean的build议。

 angular.module('mymodule', []) // Click to navigate // similar to <a href="#/partial"> but hash is not required, // eg <div click-link="/partial"> .directive('clickLink', ['$location', function($location) { return { link: function(scope, element, attrs) { element.on('click', function() { scope.$apply(function() { $location.path(attrs.clickLink); }); }); } } }]); 

它有一些有用的function,但我是Angular的新手,所以可能有改进的空间。

请记住,如果使用ng-click进行路由,则无法右键单击该元素并select“在新选项卡中打开”,或者按住Ctrl键单击该链接。 我试图在导航时使用ng-href。 ng-click最好用在button上进行操作或者像折叠一样的视觉效果。 但关于我不会推荐。 如果您更改路线,则可能需要更改许多放置在应用程序中的路线。 有一个方法返回链接。 例如:关于。 这个方法放在一个实用程序中

您可以使用:

 <a ng-href="#/about">About</a> 

如果你想在href里面使用一些dynamicvariables,你可以这样做:

 <a ng-href="{{link + 123}}">Link to 123</a> 

在哪里链接是angular度范围可变。