AngularJs Url更改但使用ui-router加载旧视图

时间:2015-10-14 12:36:52

标签: javascript asp.net angularjs angular-ui-router

我正在使用ui-router,我有这样的设置

在app.js中我有以下

 $stateProvider
      .state('TechReadiness', {
          url: "/Dashboard/TechReadiness",
          templateUrl: "/partials/TechnicalReadinessReport.aspx"
      })
    .state('TechReadiness.details', {
        url: "/ReadinessDetails/:a/:b",
        templateUrl: function ($stateParams) {
            return "/partials/TechReadinessDetails.aspx?b=" + $stateParams.b + '&a=' + $stateParams.a;
        }
    })

有一个页面,在该页面上我创建了如下所示的链接

$("#Chart5ImageMap area").each(function () {
                var vHref = $(this).attr('href');
                var arg1 = vHref.substring(vHref.indexOf("'") + 1, vHref.indexOf(",") - 1);
                var arg2 = vHref.substring(vHref.indexOf(",") + 2, vHref.lastIndexOf("'"));
                var a = arg2.split(',');
                $(this).attr('href', '#/Dashboard/TechReadiness/ReadinessDetails/' + a[0] +'/'+a[1]);
            });

这会将所有点击回发事件(asp.net图表控件)更改为简单链接。现在的问题是,每当我点击链接时,网址都会正确更新,但相应的视图不会被加载。

例如: 如果我点击链接 A =参数1,B =参数2

网址变为http://localhost:63893/#/Dashboard/TechReadiness/ReadinessDetails/parameter1/parameter2

相应地加载了正确的视图

但是当我点击链接

α=参数2,B =参数2

网址更改为http://localhost:63893/#/Dashboard/TechReadiness/ReadinessDetails/parameter2/parameter2

但视图中的内容会更改

2 个答案:

答案 0 :(得分:0)

当您已经处于州" TechReadiness.details"时,视图templateUrl将不会重新加载。您应该将参数设置为控制器,但查看模板。

答案 1 :(得分:0)

问题是我使用ASP.Net,因此在页面上启用了客户端缓存,因为页面顶部有以下行

<%@ OutputCache Duration="10" Location="Server" VaryByParam="none" %>

我通过替换

来修复它
<%@ OutputCache Duration="10" Location="Server" VaryByParam="a;b" %>