JavaScript | AngularJS | UI路由器:始终强制控制器执行

JavaScript | AngularJS | UI路由器:始终强制控制器执行,angularjs,angular-ui-router,url-routing,Angularjs,Angular Ui Router,Url Routing,我的场景需要一条带有控制器和状态app.foo视图的路由。当用户通过菜单链接到达该路由时,我希望UI路由器始终重新运行/执行控制器-因为我在这里调度一个事件以从另一个模块获取数据。问题是,如果用户切换到app.bar并返回app.foo,则此事件永远不会触发 如何强制UI路由器再次运行此控制器 例如: .state('app.foo', { url: '/foo', alwaysReload: true }); 这可能吗?如果将控制器添加到路由定义中,这是默认行为,例如:

我的场景需要一条带有控制器和状态app.foo视图的路由。当用户通过菜单链接到达该路由时,我希望UI路由器始终重新运行/执行控制器-因为我在这里调度一个事件以从另一个模块获取数据。问题是,如果用户切换到app.bar并返回app.foo,则此事件永远不会触发

如何强制UI路由器再次运行此控制器

例如:

.state('app.foo', {
    url: '/foo',
    alwaysReload: true
});

这可能吗?

如果将控制器添加到路由定义中,这是默认行为,例如:

    $stateProvider.state('app.foo', {
        url: '/foo',
        views: {
            "main": {
                controller: function ($scope) {
                      console.log('foo controller loaded.');
                },
                controllerAs: 'foo',
                templateUrl: 'foo/foo.tpl.html'
            }
        }

加载“app.foo”状态时,“foo controller loaded.”将始终记录日志。

您是否尝试过使用缓存:false重新加载:true选项?我不太确定……每次路线改变时,控制器都应该开火。你能发布你的控制器代码吗?罗伯,我可以发布代码,但是代码太多了,我担心这会混淆我问题的简单性——不过,我很感谢你的提问。不管怎样,潘卡吉的建议正是我所需要的!谢谢你们两位的贡献。潘卡吉,你们的建议非常有效。你介意把这篇文章作为一个答案,再加上一些细节和示例代码,这样我就可以接受了吗?这并不是一个真正解决问题的方案,但我会投票,因为我很高兴知道。我的状态配置中确实有一个控制器,但它嵌套在视图:{…}块中。