angularjs – 控制器使用ui-router嵌套状态(Ionic)执行两次
问题
我的Ionic应用程序允许您从侧面菜单中选择一个项目,然后在主要内容区域中显示两个选项卡(任务,消息).任务和消息选项卡是项目的嵌套状态. 当您在侧面菜单中更改项目时,TaskListCtrl将执行两次.在项目之间切换时,请参阅live demo并观察控制台.我还有一个video,详细说明了这个问题. 如何停止TaskListCtrl执行两次?有没有更好的方法来构建这些嵌套状态? 码 完整代码于GitHub ? 这是我的$stateProvider配置: .state('project',{ url: "/projects/:projectID",abstract: true,cache: false,controller: 'ProjectDetailCtrl',templateUrl: "templates/project.tabs.html",resolve: { project: function($stateParams,Projects) { return Projects.get($stateParams.projectID); } } }) .state('project.tasks',{ url: '/tasks',views: { 'tasks-tab': { templateUrl: 'templates/task.list.html',controller: 'TaskListCtrl' } } }) 来自controllers.js的相关代码片段: .controller('ProjectDetailCtrl',function($scope,project) { $scope.project = project; console.log('=> ProjectDetailCtrl (' + $scope.project.name + ')') }) .controller('TaskListCtrl',$stateParams) { $scope.tasks = $scope.project.tasks; console.log('t=> TaskListCtrl') console.log('tt=> $stateParams: ',$stateParams) console.log('tt=> $scope.tasks[0].title: ',$scope.tasks[0].title) }) 资源 > Live demo(在项目之间切换时观察控制台日志) 笔记 >我知道StackOverflow上有类似的问题 – 但是,他们提供的解决方案都没有解决我的问题.* 解决方法
我猜
tuckerjt07是对的.
这似乎是路由和参数以及离子选项卡的问题. 我认为问题在于您使用带参数的抽象控制器,但这不是问题. 我已经检查了侧边菜单是否干扰了标签,但是,问题不在那里. 我已经检查了范围,尝试使用controllerAs消除摩擦,并避免引用$scope对象来存储viewmodel但是……没有. 我已经创建了应用程序here的简化版本. 进行一些调试似乎问题就在于here. 您唯一的选择是更改project.tabs.html并加载没有子视图的任务列表.像这样的东西: <ion-view view-title="{{ project.name }}: Tasks"> <ion-tabs class="tabs-icon-top tabs-positive"> <ion-tab title="{{ project.name }} Tasks" icon="ion-home"> <ion-nav-view> <ion-content> <ion-list> <ion-item class="item-icon-right" ng-repeat='task in project.tasks'> {{ task.title }} <i class="icon ion-chevron-right icon-accessory"></i> </ion-item> </ion-list> </ion-content> </ion-nav-view> </ion-tab> <ion-tab title="About" icon="ion-ios-football" ui-sref="tabs.tab2"> <ion-nav-view name="tabs-tab2"></ion-nav-view> </ion-tab> <ion-tab title="Another" icon="ion-help-buoy" ui-sref="tabs.tab3"> <ion-nav-view name="tabs-tab3"></ion-nav-view> </ion-tab> </ion-tabs> </ion-view> 您可以查看它的工作原理here. 我想我们应该开个问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |