我在一个场景中,我的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,如
为了从网址中删除该默认路由,我们尝试过,
$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')。请指导我。