2017-04-26 72 views
0

在視圖中使用URL參數時,ion-views的緩存機制似乎中斷。離子視圖緩存&帶有URL參數的狀態

$stateProvider. 
.state('a', { 
    url: '/a', 
    templateUrl: 'templates/a.html', 
    controller: 'ACtrl' 
}) 
.state('b', { 
    url: '/b/:id', 
    templateUrl: 'templates/b.html', 
    controller: 'BCtrl' 
}) 

在這個例子中,狀態'a'被緩存並按預期工作。但是如果同一個id出現兩次,狀態'b'就會被緩存。因此/ b/1和/ b/2會導致不同的離子視圖dom元素。 我期望所有對/ b /:id的調用都使用相同的ion-view dom元素。

這是一個錯誤還是按預期工作?在我的情況下,我想要「其他」行爲,任何想法如何將其歸檔?

+0

它這樣工作,你想要的東西很難通過'ui-router'完成。但是你可以通過定義'$ scope'中所有'id'的方式來實現,並且在控制器中改變'id'而不是改變'state'。 – zoly01

+0

很傷心聽到這個,所以我必須自己做這件事,並將ID保存在服務或其他地方:( – Mewel

回答

0

您可以嘗試刪除ui-routing緩存。

.run(function($ionicPlatform,$rootScope,$templateCache) { 
    $rootScope.$on('$viewContentLoaded', function() { 
     $templateCache.removeAll(); 
    }); 
}) 

爲我工作。

+0

試過了,但$ viewContentLoaded永遠不會執行在我的情況。不知道爲什麼。但無論如何,我不想刪除所有視圖,我想緩存它們,但每個狀態只有一個。 – Mewel