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也将在这里有用。
- 这个假设是否正确? 用ng-click代替锚点?
- 如果是这样,那将如何工作? 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度范围可变。