Angularjs Ionic stateProvider-动态显示/隐藏后退按钮
我正在开发一款Ionic应用程序,我完全使用左侧菜单的工作状态 以下是菜单代码: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>
<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>