Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.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
Javascript 使用$stateProvider-controller的AngularJS/Ionic路由不会在第二次调用状态时重新加载 原始问题_Javascript_Angularjs_Ionic Framework_Url Routing_Hybrid Mobile App - Fatal编程技术网

Javascript 使用$stateProvider-controller的AngularJS/Ionic路由不会在第二次调用状态时重新加载 原始问题

Javascript 使用$stateProvider-controller的AngularJS/Ionic路由不会在第二次调用状态时重新加载 原始问题,javascript,angularjs,ionic-framework,url-routing,hybrid-mobile-app,Javascript,Angularjs,Ionic Framework,Url Routing,Hybrid Mobile App,我正在使用Ionic框架和AngularJS开发一个移动应用程序,我遇到了控制器初始化后不能重新加载的问题 其中一个状态转换(从'app.postbox details'到'app.audit questions')应将参数传递给'app.audit questions'控制器,但此控制器不会使用新参数更新自身,因为它不会重新加载 代码示例 app.js文件-配置 controller.js文件(遗漏了不相关的代码) 视图-导航代码 执行导航的视图代码都使用 从邮箱详细信息视图到审核问题视图:

我正在使用Ionic框架和AngularJS开发一个移动应用程序,我遇到了控制器初始化后不能重新加载的问题

其中一个状态转换(从
'app.postbox details'
'app.audit questions'
)应将参数传递给
'app.audit questions'
控制器,但此控制器不会使用新参数更新自身,因为它不会重新加载

代码示例

app.js文件-配置

controller.js文件(遗漏了不相关的代码)

视图-导航代码

执行导航的视图代码都使用
  • 从邮箱详细信息视图到审核问题视图:
  • 那么,有人知道如何让控制器在初始化后重新加载吗?或者如果我处理这个问题的方式不对,你能给我一个可行的方法吗


    最新资料 我最近看到了一个问题,@Radim Köhler的回答指出了答案,其中提供了很好的信息,说明了为什么在视图上使用
    cache:false
    可能不是一个好主意,因为性能问题


    我想我会分享这一点,因为在某些情况下,您可以使用其中一个来运行代码,而无需禁用缓存视图,从而在性能方面受益匪浅。

    视图是IONAL中的标准缓存视图。可以在视图或状态提供程序中配置缓存


    使用
    ui-sref
    而不是ng hreffor第一个锚使用
    ui-sref=“app.postbox details”
    &对于第二个锚使用
    ui-sref=“app.audit questions({postboxGuid:postboxGuid})”
    而不是它们各自的hrefMost,有时与控制器相关的问题大多是打字错误和注入错误;检查您注入每个控制器的内容,并使用浏览器控制台调试错误Hanks Toxus这已经修复了问题:)我完全忽略了Ionic如何处理Ionic导航视图中的状态变化,我认为这个问题只存在于最新版本的Ionic中。我有一个旧版本的应用程序,其中cache=false,控制器仍然可以正常工作。
    angular.module('sf-maintenance', ['ionic', 'starter.controllers', 'starter.services', 'ngCordova'])           
    .config(function ($stateProvider, $urlRouterProvider, $httpProvider) {
        $stateProvider
           .state('home', {
               url: '/home',
               templateUrl: 'templates/home.html',
               controller: 'HomeCtrl',
           })
           .state('app', { //app state being the side-menu
               url: '/app',
               abstract: true, //means that this state will never be activated directly, users will always go to a child state instead.
               templateUrl: 'templates/side-menu.html',
               controller: 'MenuCtrl'
           })       
           .state('app.postbox-details', {
               url: '/postbox-details',
               views: {
                   'menuContent': {
                       templateUrl: 'templates/postbox-details.html',
                       controller: 'PostboxDetailsCtrl'
                   }
               }
           })
        .state('app.audit-questions', {
            url: '/audit-questions/:postboxGuid',
            views: {
                'menuContent': {
                    templateUrl: 'templates/audit-questions.html',
                    controller: 'AuditCtrl'
                }
            }
        })
        $urlRouterProvider.otherwise('/home');
    });
    
    angular.module('starter.controllers', [])    
    .controller('HomeCtrl', function ($scope) {
    })    
    .controller('MenuCtrl', function ($scope) {
    })    
    .controller('PostboxDetailsCtrl', function ($scope, $ionicLoading, $ionicPopup, $cordovaBarcodeScanner, $state, DataService) {
    
        $scope.postboxGuid = DataService.getNewGUID();
        //Rest of the controller functions are below
    })    
    .controller('AuditCtrl', function ($scope, $ionicSlideBoxDelegate, $stateParams, DataService) {
    
        $scope.auditDetails = {
            postboxGuid: $stateParams.postboxGuid
        };    
    });