angularjs:当用户右键单击并选择“在新选项卡中打开”时触发ng click函数

angularjs:当用户右键单击并选择“在新选项卡中打开”时触发ng click函数,angularjs,Angularjs,我目前有一个锚定标记,定义如下 <a href="" ng-click="controllerFn(scopeVar)">Click here</a> 这正如预期的那样有效 但是,当用户右键单击锚定标记并选择“在新选项卡中打开”时,它将不起作用,用户将被带到主登录页而不是新路线 当用户选择在新选项卡中打开时,我想调用“controllerFn”,以便在进入新状态之前设置$localStorage值,并且链接应该在新选项卡中打开 可能吗?有什么想法吗?问题可能是您使用的是

我目前有一个锚定标记,定义如下

<a href="" ng-click="controllerFn(scopeVar)">Click here</a>
这正如预期的那样有效

但是,当用户右键单击锚定标记并选择“在新选项卡中打开”时,它将不起作用,用户将被带到主登录页而不是新路线

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


可能吗?有什么想法吗?

问题可能是您使用的是angular应用程序,这意味着您的应用程序在每次页面(重新)加载时都会被初始化。通常情况下,您不会真正刷新页面,只需编辑地址栏(路由),而不会实际重新加载页面。当您打开新选项卡时,您的应用程序已加载,但找不到当前会话/用户对象

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

因此,为了让它发挥作用,您必须存储某种令牌,并确保每次启动应用程序时都检查该令牌是否存在/有效

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

我想你做不到。看看这个,以防对我有所帮助,我明白你在说什么。使用“controllerFn”中的当前代码,它可以正常工作并在新选项卡中打开。只有当用户右键单击链接并在新选项卡中打开时,他才会重定向到登录。通过代码(target=_blank)在新窗口中打开url与右键单击并在新选项卡中打开url有什么区别吗?我不完全确定,但我相信这可能与共享范围有关。只要不刷新页面,angular应用程序就会继续运行。在代码中调用windo.open时,实际上您可以共享数据。最后一点可能解释了为什么您在此时共享相同的会话/数据。由于主窗口中的javascript作用域保持活动状态,您可能能够共享此会话数据。刷新初始窗口时会发生什么情况?一旦原始范围被销毁,数据是否仍然可用?我必须试试这个,这只是一个简单的理论,在使用window.open时,最后一件事就是你总是有某种关系,将窗口绑定到调用窗口(window.opener)这就解释了为什么window.open会像右键单击一样工作,只是将url复制到一个新窗口中。我必须清除浏览器缓存,我注意到,当右键单击并打开新窗口时,它实际上会将用户带到主登录页,而不是新状态的url。这是因为我没有设置href或ng href。如何从href或ng href调用控制器函数?
angular.module('myApp',[..]).config(function(){
         //read token 
})