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 如何动态启用禁用的ion选项卡?_Angularjs_Ionic Framework_Tabs - Fatal编程技术网

Angularjs 如何动态启用禁用的ion选项卡?

Angularjs 如何动态启用禁用的ion选项卡?,angularjs,ionic-framework,tabs,Angularjs,Ionic Framework,Tabs,这应该很直截了当,但事实并非如此 在我的html中,我有4个选项卡,其中一个是默认选项卡,另外3个是手动禁用的离子选项卡…我的选项卡是标准离子模板(静态)选项卡: …天知道还有多少其他组合。但一切都不起作用。我甚至定义了“委托句柄”和“ng attr id”来尝试访问ion选项卡属性——但同样,没有任何效果 “我的选项卡”是“定义”请尝试在控制器中创建类似这样的模型,并在HTML中绑定到该模型以动态更改渲染: $scope.pageFlow = { disableOtherTabs : t

这应该很直截了当,但事实并非如此

在我的html中,我有4个选项卡,其中一个是默认选项卡,另外3个是手动禁用的离子选项卡…我的选项卡是标准离子模板(静态)选项卡:

…天知道还有多少其他组合。但一切都不起作用。我甚至定义了“委托句柄”和“ng attr id”来尝试访问ion选项卡属性——但同样,没有任何效果


“我的选项卡”是“定义”

请尝试在控制器中创建类似这样的模型,并在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');