Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Ionic stateProvider-动态显示/隐藏后退按钮_Angularjs_Ionic Framework_Angular Ui Router - Fatal编程技术网

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

Angularjs Ionic stateProvider-动态显示/隐藏后退按钮,angularjs,ionic-framework,angular-ui-router,Angularjs,Ionic Framework,Angular Ui Router,我正在开发一款Ionic应用程序,我完全使用左侧菜单的工作状态 以下是菜单代码: <ion-side-menu side="left"> <ion-header-bar class="bar-royal"> <h1 class="title">Example</h1> </ion-header-bar> <ion-content> <ion-list>

我正在开发一款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>
现在,我的问题是:

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

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

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

我该怎么做?我真的一点线索也没有


提前感谢您的帮助。

顺便问一下,这是一个有趣的问题

我认为使用$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
  });

});
你可以在这里找到一个小文章的链接,它涵盖了所有的可能性


嗨,我遇到过类似的情况,如果表单是可编辑的,我必须隐藏按钮,所以我做了以下操作

<ion-nav-back-button ng-show="!$root.hideBack"></ion-nav-back-button>
因此,如果字段是可编辑的,则“后退”按钮将消失。我希望这能有所帮助

另一个例子是:

在调用
$state.go('app.details')
之前,在控制器中使用
$IonichStory
。我猜您的主页使用了不同的控制器,您可以使用
$stage。转到
转到详细信息页面?所以代码应该是这样的

app.controller('HomeCtrl', ["$scope", "$ionicHistory", function($scope, $ionicHistory) {

    $scope.goToDetails = function() {
      $ionicHistory.nextViewOptions({
        disableBack: true
      });
       $state.go('app.details');
    }

}]);
Html



你能解释得更清楚一点吗?我正在谈论使用disableBack的示例。现在你的答案已经很清楚了。我已经更新了我的答案,希望这次有点清楚。
$scope.makeEditable = function () {
    $scope.isEditable = true;
    $rootScope.hideBack = true;
};
app.controller('HomeCtrl', ["$scope", "$ionicHistory", function($scope, $ionicHistory) {

    $scope.goToDetails = function() {
      $ionicHistory.nextViewOptions({
        disableBack: true
      });
       $state.go('app.details');
    }

}]);
<button ng-click="goToDetails()"></button>