ui-router,url更改,确实击中控制器,内容不会加载,仅在重新加载时

时间:2016-07-05 05:56:19

标签: angularjs angular-ui-router

我有一个子状态,假设将内容加载到名为ui-view的{​​{1}}中。当用户处于创建名为" solution"的东西时,它就会这样做。奇怪的是,一旦保存并且用户重新访问调用相同子状态的进程的特定部分,它就不会加载内容。任何人都可以发现此代码可能导致此不一致行为的任何错误吗?所以我可以排除这种情况并开始寻找其他地方。

  • 网址更改
  • 网址具有相同的参数
  • 在重新加载页面时,正确的内容被加载到“ui-view``

页面设置为

ui-solution
  - 标签
  - ui-view

ui-view="ui-solution"

$stateProvider.state('analyse', { url: '/analyse/:id', data: { solution: false }, templateUrl: 'app/components/a/a.html', controller: 'Analisys' }); $stateProvider.state('analyse.solution', { url: '/solution', data: { solution: true }, views: { 'ui-solution': { templateUrl: 'app/components/a/s/s.html', controller: 'Analisys' } } }); 出现在ui-view="ui-solution"其中一个标签

1 个答案:

答案 0 :(得分:0)

您尝试加载嵌套视图并且不在父视图中因此无法加载 - 我遇到了同样的问题 我建议看一下这个以及我在评论中发送的2个链接

$stateProvider
       .state('analyse', {
            url: '/analyse/:id',
            data: {
                solution: false
            },
            templateUrl: 'app/components/a/a.html',
            //controller: 'Analisys' better using ng-controller in the html instead of here
        })
        .state('analyse.solution', {
            url: '/solution',
            data: {
                solution: true
            },
            views: {
                'ui-solution': {
                    templateUrl: 'app/components/a/s/s.html'
                }
            }
        });

你的a.html应该是

<div ng-controller="Analisys as ctrl">
    <h1 ui-serf="analisys.solution">should load the nested view</h1>
    <div ui-view="ui-solution"></div>//here should see the nested html
</div>

和index.html应该有

<div ui-view></div>

希望它会帮助你

顺便说一句

你不需要ui-view="solution"因为它会自动引用内部的ui-view(除非你很少

所以你可以这样做

 $stateProvider
           .state('analyse', {
                url: '/analyse/:id',
                data: {
                    solution: false
                },
                templateUrl: 'app/components/a/a.html'
                //controller: 'Analisys' better using ng-controller in the html instead of here
            })
            .state('analyse.solution', {
                url: '/solution',
                data: {
                    solution: true
                },                    
                templateUrl: 'app/components/a/s/s.html'
            });

和a.html

<div ng-controller="Analisys as ctrl">
    <h1 ui-serf="analisys.solution">should load the nested view</h1>
    <div ui-view></div>//here should see the nested html
</div>