某些路由无法在iOS上加载其模板

时间:2017-04-20 16:15:39

标签: angularjs

我们已在Android和Apple设备的应用商店中发布了Angular 1.6移动应用。一切似乎在Android设备上正常工作,但在某些Apple设备(即iPhone 5SE)上,路由似乎不起作用。

这是我们的路由代码:

$stateProvider
        .state('login', {
          url: '/login',
          template: '<login></login>',
          params: { newUserRegistered: false },
          resolve : {
            checkAuthTokenAvail : ["$localStorage", "$location", function($localStorage, $location){
              if( typeof $localStorage.AuthToken === "string" && $localStorage.AuthToken.length > 8 ){
                $location.url('/main/dashboard');
              }
            }]
          }
        })
        .state('registration', {
          url: '/registration',
          template: '<registration></registration>'
        })
        .state('password-reset', {
          url: '/password-reset',
          template: '<password-reset></password-reset>'
        })
        .state('main', {
          abstract: true,
          template: '<ui-view></ui-view>',
          resolve: {
            checkSession: ["$location", "$localStorage", function($location, $localStorage) {
              if( typeof $localStorage.AuthToken !== "string" ) {
                $location.url('/login');
              }
            }]
          }
        })
        .state('main.dashboard', {
          url: '/main/dashboard',
          template: '<dashboard></dashboard>'
        })
        .state('main.money', {
          url: '/main/money',
          template: '<money></money>'
        })
        .state('main.spending', {
          url: '/main/spending',
          template: '<spending></spending>'
        })
        .state('main.cash', {
          url: '/main/cash',
          template: '<cash></cash>'
        })
        .state('main.snow', {
          url: '/main/snow',
          template: '<snow></snow>'
        });

基本上money&amp; spending都可以正常工作 - 我们可以在应用中看到该组件。但是cash&amp; snow没有。通过调试,我们可以看到他们的模板没有被加载,而另外两个是。

我认为这可能与我们正在使用的angular-ui-router版本有关,因此我已将其分支并更新为1.0.0,并将路由更改为使用component代替template,但我们仍然遇到同样的问题。

我重申,这似乎只出现在iOS(iPad上的iOS 9.0.2)设备上。有人遇到过这样的事吗?我不想在组件定义中将templateUrl切换到template,因为不幸的是html本身已经变得非常大。

1 个答案:

答案 0 :(得分:0)

我弄明白了这个问题。原因是我们尝试使用的iOS版本中没有使用指数运算符**

在加载屏幕时出现原因的另一个原因是在某些变量上使用$scope.$watch,这些变量调用了使用指数运算符的函数。它与我们的路线无关。