如何在不调用$ location.path的情况下手动调用routechangesuccess事件

时间:2015-05-26 10:48:13

标签: javascript asp.net-mvc angularjs

我在一个场景中,我的visual studio解决方案包含两个项目,一个是angularjs应用程序(main),另一个项目是MVC项目。我们使用虚拟路径提供程序机制将MVC项目的相关页面显示到angularjs应用程序中。现在我们可以访问angularjs和MVC应用程序相关的URL。但是,在我们这样做时,我们正面临一些问题,

我们通过比较$ locationchnagestart事件中传入网址中的“/#”位置来区分angularjs和MVC项目相关网址之间的网址。当我们访问MVC项目相关网址时,它会显示相应的网页,但在请求的网址末尾会添加默认的angularjs应用程序路径

.config(['$routeProvider', '$httpProvider', function ($routeProvider, $httpProvider) {
....
$routeProvider.otherwise({       
        redirectTo: function () {
                return '/default';
        }
    });
}]);

因为没有找到路由,所以它会阻止并将默认路由位添加到URL,如

  

http://localhost:88/MvcHome/Index#/default

为了从网址中删除该默认路由,我们尝试过,

 $scope.$on('$locationChangeStart', function (event, next, current) {
    if(IsMvcUrl){  
      event.preventDefault();
    }
 }); 

它工作正常,它从请求的URL中删除了默认路由位。 但它并没有调用routechangesuccess事件,因为我们正在locationchangestart本身停止传播。

我们需要调用routechangesuccess事件来执行一些与应用程序相关的操作,

 $rootScope.$on("$routeChangeSuccess", function (a, b, c) {
            DoOperation(a, b, c);
  });

我已尝试在locationchangestart事件中广播routechangesuccess事件,但由于参数传递错误而无法正常工作。

是否有任何可能的方法可以通过正确的参数传递手动调用routechangesuccess事件,而无需在locationchangestart事件中调用$ location.path('some url')。请指导我。

0 个答案:

没有答案