我正在開發一個Web應用程序angular
1.x和ui-router
0.3.x.當我切換到新的視圖狀態時,相應的控制器將被實例化(數據狀態將被重置)。正如你可以從下面的代碼片斷看到的,終端(實際上這是jquery.terminal)將在每次切換到/logview
時創建,並且在視圖狀態更改爲其他內容時將被銷燬。UI-Router:如何在切換視圖時保留視圖
angular.module('app')
.config(['$stateProvider', function($stateProvider) {
$stateProvider.state('logview', {
url: '/logview',
templateUrl: 'views/logview/logview.html',
controller: 'LogViewCtrl'
});
}])
.controller('LogViewCtrl', ['$scope', function($scope) {
var terminal = $('#terminal').terminal();
console.log(terminal created');
$scope.$on('$destroy', function() {
terminal.destroy();
});
}])
;
我想保留logview
,並把它留在後臺運行,這樣當我切換回logview
再次,我可以看到所有的日誌消息,因爲web應用程序啓動..
更新1:我搜索了SO,這個question有一個非常符合要求的答案,它使用ng-show
來顯示/隱藏日誌視圖。這將是一種方式。不過,我需要非常小心地設計佈局,因爲我使用kendo-splitter
。它將使用絕對容器的寬度和高度。一個隱藏的div將會把計算搞亂。
控制器總是創建和銷燬。使用服務來保存狀態 – Phil
我檢查了'ui-router'的'controllerProvider',它可以動態實例化一個控制器,但它不能緩存任何控制器實例。我將重新設計佈局,然後使用'ng-show'。 – stanleyxu2005