基本上我希望我的应用程序在用户按下Ctrl(在Linux窗口上),Cmd(在OSX上)时在新选项卡/页面中打开链接。什么是路要走。
注意:我无法摆脱ng-click。应用程序在范围内使用它进行各种方法调用。
答案 0 :(得分:8)
试试这个:
在HTML中,
<div ng-click="gotoPageOrFunc($event)"></div>
在JS中,
$scope.gotoPageOrFunc = function(event){
if (event.ctrlKey==1){
// Use windows.location or your link.
}else{
// Your actual functionalities.
}
}
答案 1 :(得分:0)
使用指令。
angular.module('myapp').directive('newtab', function() {
return {
restrict: 'AC',
link: function($scope, $elem) {
var target = $elem.attr('target');
$elem.on('click', function(e) {
target = $elem.attr('target');
$elem.attr('target', '_blank');
});
$elem.on('blur', function() {
$elem.attr('target', target);
});
}
};
});
// UPD
使用
<a href="/my/page?foo=bar" class="newtab">xoxo<a/>
or
<a href="/my/page?foo=bar" newtab>xoxo</a>
or
<a href="/my/page?foo=bar" data-newtab>xoxo</a>
// UPD 2
<a href="/my/page?foo=bar"
data-ng-click="myControllerMethod()" class="newtab">xoxo<a/>
or
<a href="/my/page?foo=bar"
data-ng-click="myControllerMethod()" newtab>xoxo</a>
or
<a href="/my/page?foo=bar"
data-ng-click="myControllerMethod()" data-newtab>xoxo</a>
答案 2 :(得分:0)
这可能对您有帮助
HTML
<a ng-click="getPreviousURL()" href="https://www.google.com/unlimited-plan/">More.../a>
JS
$scope.getPreviousURL = function(moreurl,category,returnurl) {
var revrl=category+'bundles';
$window.localStorage.setItem('prev_url',revrl);
**var target = $elem.attr('href');**
**window.location = target;**
};