我们已在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本身已经变得非常大。
答案 0 :(得分:0)
我弄明白了这个问题。原因是我们尝试使用的iOS版本中没有使用指数运算符**
。
在加载屏幕时出现原因的另一个原因是在某些变量上使用$scope.$watch
,这些变量调用了使用指数运算符的函数。它与我们的路线无关。