如何在 Ionic 中使用带有抽象状态参数的选项卡/清除导航缓存

How to use tabs in Ionic with a abstract state parameter / clear cache on navigation

我有一个包含群组列表的主屏幕。每个列表项 links 到具有参数(gid,来自 groupid)的相同抽象状态。

        .state('group', {
            url: "/group/:gid",
            abstract: true,
            templateUrl: "templates/group.html"
        })

        .state('group.members', {
            url: '/members',
            views: {
                'group-members': {
                    templateUrl: 'templates/group-members.html',
                    controller: 'MemberCtrl'
                }
            }
        })

        .state('group.events', {
            url: '/events',
            views: {
                'group-events': {
                    templateUrl: 'templates/group-events.html',
                    controller: 'EventCtrl'
                }
            }
        })

        .state('group.settings', {
            url: "/settings",
            views: {
                'group-settings': {
                    templateUrl: "templates/group-settings.html",
                    controller: 'SettingsCtrl'
                }
            }
        })

在那个抽象状态下,我有 3 个选项卡应该在同一个 parameter/group 上工作。虽然这适用于我从主屏幕 link 到的选项卡,但其他选项卡会记住它们的历史记录,并且在返回到主屏幕并选择另一个组后,只有 linked 到选项卡显示正确组的详细信息。其他选项卡将显示先前(缓存的)组的详细信息。

我认为这可能会通过清除某个地方的缓存来解决,但理想情况下我不想每次都为每个选项卡清除它。在同一组中的选项卡之间导航时,应使用缓存。只有在返回主屏幕并选择新组后,才应清除选项卡的缓存。

另一种方法可能是以某种方式让其他视图知道已选择了一个新组。对于 linked 的选项卡很容易:参数在 url 中给出。但其他人不会从主屏幕 linked 到。有没有办法在模板文件中将参数传递给 ion-tabs?

实现此功能的最佳方法是什么?这一定是一个不时发生的用例,我怀疑有一种首选的处理方式。我正在使用 Ionic 1.0.0。谢谢

使用这种方式清除ionic中的缓存

<ion-view cache-view="false" view-title="My Title!"> ... </ion-view>

group-members 视图正在更新,但 groups 视图的其余部分已过时。通过将 cache: false 添加到下面代码笔中的状态,它工作正常。

http://codepen.io/whiskeyjack/pen/BNmpMx

javascript .state('group', { url: "/group/:gid", abstract: true, cache: false, templateUrl: "templates/group.html" })

另见 http://ionicframework.com/docs/api/service/$ionicHistory/

的 $ionicHistory.clearCache()