【问题标题】:Ionic: $state.go() changes URL but not the viewIonic:$state.go() 更改 URL 但不更改视图
【发布时间】:2017-04-14 20:50:15
【问题描述】:

我对 Ionic 和 JavaScript 完全陌生,在我的项目中更改视图时遇到了一些问题。

我已经使用选项卡启动器创建了项目,并且在使用默认选项卡移动甚至添加新选项卡时一切正常。在代码的某些部分,我需要移动到选项卡视图,所以我使用$state.go() 函数并且它工作正常。但是,我添加了一个带有模板、控制器和状态的新视图,我需要在单击按钮时加载它。所以我再次使用$state.go(),但资源管理器中的 URL 更改但视图没有更改,它保留在前一个中。当我在浏览器中键入 URL 时它也不起作用,所以问题可能出在状态定义中,但我很确定它没问题。


.state('tab.file_explorer', {
    url: '/file_explorer',
    views: {
      'tab-file_explorer': {
        templateUrl: 'templates/tab-file_explorer.html',
        controller: 'file_explorerCtrl'
      }
    }
  })

控制器
它位于按钮所在的另一个视图的控制器中(按钮工作正常,我已经测试过了)。 file_explorerCtrl 控制器目前为空。

.controller('load_csvCtrl', function($scope, $state) {
    $scope.loadCsv = function(){
       $state.go('tab.file_explorer');
    }
}

这将重定向到 URL http://localhost:8100/#/tab/file_explorer,没有控制台输出或 404 错误。我也尝试过使用$location.path()$window.location.assign(),但它也无法加载模板。

我将不胜感激。

【问题讨论】:

  • 在 $scope.loadCsv 中添加一个 console.log('inside loadcsv') 来检查它是否被触发。当你认为它可能会失败时,你可以使用其他部分的代码来跟踪它。
  • @Flakerim 是的,$scope.loadCsv 被解雇了。
  • @RalkaiShagtten 你解决了吗?我也遇到了同样的问题。

标签: javascript ionic-framework


【解决方案1】:

你能检查一下你的 index.html 是否有<ion-nav-view></ion-nav-view> 标签

【讨论】:

  • 是的,在 部分的末尾。
【解决方案2】:

您正在使用命名视图。您的 <ion-nav-view> 应与名称匹配:

<ion-nav-view name="tab-file_explorer"></ion-nav-view>

在此处查看文档:

https://github.com/angular-ui/ui-router/wiki/Multiple-Named-Views

【讨论】:

  • 没什么,我试过了,还是一样。 URL 发生变化,但视图保持不变。
  • 你应该粘贴 html
【解决方案3】:

在视图中设置cache-view="false"

例子:

<ion-view cache-view="false">
<!-- View Content goes here -->
</ion-view>

【讨论】:

    猜你喜欢
    • 2018-02-20
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    相关资源
    最近更新 更多