我有一个指令,这是网站标题与后退按钮,我想在点击返回到上一页。我怎么用角度的方式来做呢?
我试过了:
<header class="title">
<a class="back" ng-class="icons"><img src="../media/icons/right_circular.png" ng-click="history.back()" /></a>
<h1>{{title}}</h1>
<a href="/home" class="home" ng-class="icons"><img src="../media/icons/53-house.png" /></a>
</header>
这是js指令:
myApp.directive('siteHeader', function () {
return {
restrict: 'E',
templateUrl: 'partials/siteHeader.html',
scope: {
title: '@title',
icons: '@icons'
}
};
});
但是什么也没发生。我查看了有关$location的angular.js应用程序接口,但没有找到任何关于back按钮或history.back()
的内容。
发布于 2012-12-28 21:52:20
您需要在指令中使用链接函数:
link: function(scope, element, attrs) {
element.on('click', function() {
$window.history.back();
});
}
参见jsFiddle。
发布于 2012-12-28 21:45:01
Angular路由会监视浏览器的位置,所以只需使用window.history.back()
来单击某些内容即可。
HTML:
<div class="nav-header" ng-click="doTheBack()">Reverse!</div>
JS:
$scope.doTheBack = function() {
window.history.back();
};
我通常在我的应用程序控制器上创建一个名为'$back‘的全局函数,我通常将其放在body标签上。
angular.module('myApp').controller('AppCtrl', ['$scope', function($scope) {
$scope.$back = function() {
window.history.back();
};
}]);
然后,在我的应用程序中的任何地方,我都可以执行<a ng-click="$back()">Back</a>
(如果您希望它更具可测试性,请将$window服务注入您的控制器并使用$window.history.back()
)。
发布于 2014-04-29 05:04:23
理想情况下,使用简单的指令使控制器不受冗余$window的影响
app.directive('back', ['$window', function($window) {
return {
restrict: 'A',
link: function (scope, elem, attrs) {
elem.bind('click', function () {
$window.history.back();
});
}
};
}]);
像这样使用:
<button back>Back</button>
https://stackoverflow.com/questions/14070285
复制相似问题