angularjs:当用户右键单击并在新选项卡中选择打开时触发ng-click功能

时间:2015-04-01 18:49:29

标签: angularjs

我目前的锚标记定义为

<a href="" ng-click="controllerFn(scopeVar)">Click here</a>

在控制器功能中,我使用ng-storage($ localStorage设置一些值,然后使用angular-ui路由器进入下一个状态。新链接将在新选项卡中打开。

$scope.controllerFn = function(var){
                    $localStorage.headings = $localStorage.headings || {};
                    $localStorage.headings[var.uuid] = var;
                    var url = $state.href('newstate', {id: var.uuid, name : var.name});
                    window.open(url,'_blank');
                };

这可以按预期工作。

但是,当用户右键单击锚标签并在新标签中选择打开时,它不起作用,用户将被带到主要登录页面而不是新路线。

当用户选择在新标签页中打开时,我想调用“controllerFn”,以便在进入新状态之前设置$ localStorage值,并且链接应该在新标签页中打开。

这可能吗?任何想法?

1 个答案:

答案 0 :(得分:0)

问题可能在于您使用角度应用程序,这意味着每次页面(重新)加载时您的应用程序都会初始化。通常你不会真正刷新你的页面,角度只是编辑你的地址栏(路线)而不实际重新加载页面。当您打开新标签页时,您的应用程序已加载,并且找不到您当前的会话/用户对象。

通常,您将拥有由服务器创建的会话上下文。使用$ window.Session存储数据时,数据本身仅在当前窗口中可用。在我看到它时打开一个新选项卡将导致创建一个新会话。

因此,为了使其正常工作,您必须存储某种令牌,并确保每次应用程序启动时检查该令牌是否存在/有效。

angular.module('myApp',[..]).config(function(){
         //read token 
})