Angularjs 如何动态启用禁用的ion选项卡?
这应该很直截了当,但事实并非如此 在我的html中,我有4个选项卡,其中一个是默认选项卡,另外3个是手动禁用的离子选项卡…我的选项卡是标准离子模板(静态)选项卡: …天知道还有多少其他组合。但一切都不起作用。我甚至定义了“委托句柄”和“ng attr id”来尝试访问ion选项卡属性——但同样,没有任何效果Angularjs 如何动态启用禁用的ion选项卡?,angularjs,ionic-framework,tabs,Angularjs,Ionic Framework,Tabs,这应该很直截了当,但事实并非如此 在我的html中,我有4个选项卡,其中一个是默认选项卡,另外3个是手动禁用的离子选项卡…我的选项卡是标准离子模板(静态)选项卡: …天知道还有多少其他组合。但一切都不起作用。我甚至定义了“委托句柄”和“ng attr id”来尝试访问ion选项卡属性——但同样,没有任何效果 “我的选项卡”是“定义”请尝试在控制器中创建类似这样的模型,并在HTML中绑定到该模型以动态更改渲染: $scope.pageFlow = { disableOtherTabs : t
“我的选项卡”是“定义”请尝试在控制器中创建类似这样的模型,并在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">
显然,将它注入到html主页面中,然后在导航到包含表单的“tab.tab1”之前,应该调用此控制器。在此控制器中,从上面定义您的模型。不过,您还需要多走一步
在新控制器上添加如下内容:
var refreshFinalizer = $rootScope.$on('updateTabsRefresh', function (event, data) {
$scope.pageFlow.disableOtherTabs = false;
});
$scope.$on('$destroy', function () {
refreshFinalizer ();
});
选中表单后,在选项卡1上向侦听器添加广播:
$rootScope.$broadcast('updateTabsRefresh');
您在哪个控制器中定义$scope.pageFlow={..}?我在Tab1控制器中尝试了这一点,然后在提交表单时,Tab1控制器中的另一个函数会重置$scope.pageFlow.disableOtherTabs=false;-但这对我不起作用。按照上面的定义将模型绑定到tab2并没有禁用tab图标-它仍然可以单击。哦,好的。我明白了,我的页面设置有点不同。您是否有一个主选项卡控制器,然后每个选项卡都有单独的控制器?我甚至尝试过,但也没有成功。我只是重新编辑了上面的主代码和注释,以反映我的设置是如何完成的。我使用的是他们从主站点提供的静态离子标签模板。好的,最后一个问题。在你的应用程序配置中,你的布局是否与此类似
.state('tabs',{url:/tab',摘要:true,templateUrl:'templates/tabs.html'})。state('tabs.home',{url:/home',视图:{'home tab':{templateUrl:'templates/home.html',controller:'HomeTabCtrl'}})
.state('tab', {
url: "/tab",
abstract: true,
templateUrl: "templates/tabs.html",
controller: "tabsController"
})
var refreshFinalizer = $rootScope.$on('updateTabsRefresh', function (event, data) {
$scope.pageFlow.disableOtherTabs = false;
});
$scope.$on('$destroy', function () {
refreshFinalizer ();
});
$rootScope.$broadcast('updateTabsRefresh');