尝试在控制器中创建这样的模型,并将其绑定到 HTML 中以动态更改渲染:
$scope.pageFlow = {
disableOtherTabs : true
}
然后,当您提交表单时更改值:
$scope.pageFlow.disableOtherTabs = false;
最后,将模型绑定到您的选项卡:
<ion-tab id="tab2" disabled="pageFlow.disableOtherTabs" title="Tab2" icon-off='ion-off' icon-on='ion-on' href="#/tab/tab2">
如果您希望启用所有选项卡,请在所有选项卡上使用相同的属性,或者添加额外的属性来控制各个选项卡。
UPDATED
在你的 app.js 中添加一个控制器到你的基本选项卡:
.state('tab', {
url: "/tab",
abstract: true,
templateUrl: "templates/tabs.html",
controller: "tabsController"
})
显然,将其注入到您的主 html 页面中,然后在导航到包含您的表单的“tab.tab1”之前应该调用此控制器。在此控制器中从上面定义您的模型。然而,您仍然需要再执行一步。
在你的新控制器上添加如下内容:
var refreshFinalizer = $rootScope.$on('updateTabsRefresh', function (event, data) {
$scope.pageFlow.disableOtherTabs = false;
});
$scope.$on('$destroy', function () {
refreshFinalizer ();
});
在检查表单后,在 tab1 上将广播添加到侦听器:
$rootScope.$broadcast('updateTabsRefresh');