bab*_*dev 188 javascript angularjs
我有指令是带有后退按钮的站点标题,我想点击返回上一页.我如何以有角度的方式做到这一点?
我试过了:
<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>
Run Code Online (Sandbox Code Playgroud)
这是指令js:
myApp.directive('siteHeader', function () {
return {
restrict: 'E',
templateUrl: 'partials/siteHeader.html',
scope: {
title: '@title',
icons: '@icons'
}
};
});
Run Code Online (Sandbox Code Playgroud)
但没有任何反应.我在angular.js API中查看了关于$ location但没有找到任何关于后退按钮或history.back().
asg*_*oth 261
您需要在指令中使用链接函数:
link: function(scope, element, attrs) {
element.on('click', function() {
$window.history.back();
});
}
Run Code Online (Sandbox Code Playgroud)
见jsFiddle.
And*_*lin 132
Angular路线观察浏览器的位置,因此只需window.history.back()点击一下即可使用.
HTML:
<div class="nav-header" ng-click="doTheBack()">Reverse!</div>
Run Code Online (Sandbox Code Playgroud)
JS:
$scope.doTheBack = function() {
window.history.back();
};
Run Code Online (Sandbox Code Playgroud)
我通常在我的应用程序控制器上创建一个名为'$ back'的全局函数,我通常将其放在body标签上.
angular.module('myApp').controller('AppCtrl', ['$scope', function($scope) {
$scope.$back = function() {
window.history.back();
};
}]);
Run Code Online (Sandbox Code Playgroud)
然后在我的应用程序的任何地方,我可以做 <a ng-click="$back()">Back</a>
(如果您希望它更易于测试,请将$ window服务注入您的控制器并使用$window.history.back()).
Dar*_*ren 65
理想情况下,使用简单的指令使控制器不受冗余$ window的影响
app.directive('back', ['$window', function($window) {
return {
restrict: 'A',
link: function (scope, elem, attrs) {
elem.bind('click', function () {
$window.history.back();
});
}
};
}]);
Run Code Online (Sandbox Code Playgroud)
使用这样:
<button back>Back</button>
Run Code Online (Sandbox Code Playgroud)
ple*_*ock 20
另外一个不错的和可重复使用的解决方案是建立就像一个指令,这个:
app.directive( 'backButton', function() {
return {
restrict: 'A',
link: function( scope, element, attrs ) {
element.on( 'click', function () {
history.back();
scope.$apply();
} );
}
};
} );
Run Code Online (Sandbox Code Playgroud)
然后就像这样使用它:
<a href back-button>back</a>
Run Code Online (Sandbox Code Playgroud)
Rob*_*ave 18
如果它有用......我正在达到"10 $ digest()迭代次数.中止!" 使用$ window.history.back()时出错 使用IE9(当然在其他浏览器中工作正常).
我通过使用它得到它的工作:
setTimeout(function() {
$window.history.back();
},100);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
241298 次 |
| 最近记录: |