首页 文章

Ionic stateProvider - 动态显示/隐藏后退按钮

提问于
浏览
1

我正在研究一个Ionic应用程序,我完全使用工作状态的左菜单 .

这是菜单代码:

<ion-side-menu side="left">
    <ion-header-bar class="bar-royal">
        <h1 class="title">Example</h1>
    </ion-header-bar>
    <ion-content>
        <ion-list>
            <ion-item menu-close ng-repeat="test in data"
                      ng-switch="test.ID"
                      ng-href="{{test.ID == 0 ? '#/app/test' : '#/app/details/' + test.iID}}"
                      class="item item-icon-right">
                <div ng-switch-when="0"><span>{{test.Name}}</span></div>    
                <div ng-switch-default><span>{{test.Name}}</span>
                </div>
            </ion-item>
        </ion-list>    
    </ion-content>
</ion-side-menu>

非常基本的设置 .

以及具有状态的代码(coffescript):

angular.module('hgApp', ['ionic'])
.config [
'$stateProvider'
'$urlRouterProvider'
($stateProvider, $urlRouterProvider) ->
    $stateProvider.state('app',
       url: '/app'
       abstract: true
       templateUrl: './sections/menu/menu.html'
       controller: 'menuList'
    ).state('app.details',
       url: '/details/:testID'
       views:
         'menuContent':
             templateUrl: './sections/details/testDetails.html'
             controller: 'testDetails'

现在,我的问题在这里:

我可以从左侧菜单列表中导航到 app/details/{testID} ,或者从我主页上的链接导航到 app/details/{testID} .

我需要能够在 app/details/{testID} 的顶部栏中添加一个后退按钮,只有当我使用主页上的链接到达页面时,如果我从左侧菜单列表到达那里则不能 .

菜单列表和主页上的链接都用作href "#/app/details/{{test.ID}}"

我怎样才能做到这一点?我真的不知道 .

在此先感谢您的帮助 .

2 回答

  • 0

    嗨,我有一个类似的情况,我必须隐藏按钮,如果表单是可编辑的,所以我做了以下

    <ion-nav-back-button ng-show="!$root.hideBack"></ion-nav-back-button>
    

    Controller.js

    $scope.makeEditable = function () {
        $scope.isEditable = true;
        $rootScope.hideBack = true;
    };
    

    因此,如果字段是可编辑的,则后退按钮将消失 . 我希望这有任何帮助 .

    Another example is:

    在调用 $state.go('app.details') 之前,在控制器中使用 $ionicHistory . 我猜你在主页上有不同的控制器,你使用 $stage.go 进入详情页面?所以代码看起来应该是这样的

    app.controller('HomeCtrl', ["$scope", "$ionicHistory", function($scope, $ionicHistory) {
    
        $scope.goToDetails = function() {
          $ionicHistory.nextViewOptions({
            disableBack: true
          });
           $state.go('app.details');
        }
    
    }]);
    

    HTML

    <button ng-click="goToDetails()"></button>
    
  • 1

    顺便提一下有趣的问题

    我认为你可以用$ broadcast完成你想要的行为

    基本上你有一个函数,当你点击链接时会调用它来告诉testDetails控制器'嘿,我们来自一个链接,做你的东西'

    testDetails控制器将期待此调用并相应地显示按钮

    原始代码:

    app.controller('AnyCtrl',
     function AnyCtrl ($scope) {
        // Call this code on link click
        $scope.$broadcast('fromlink', 'Some data');
    });
    
    app.controller('testDetails',
      function testDetails ($scope) {
    
      $scope.$on('fromlink', function (event, data) {
        // Add button. Profit
      });
    
    });
    

    您可以在此处找到涵盖所有可能性的小文章的链接

    https://toddmotto.com/all-about-angulars-emit-broadcast-on-publish-subscribing/

相关问题