2017-08-28 130 views
1

我希望有人幫助您瞭解如何在轉換中更改視圖。 我的問題是,我需要動態加載視圖。所以,我創建了一個新的觀點(這似乎是工作):

var viewname = 'view-'+Date.now(); 
var element = angular.element(document.querySelector('#view-container')); 
var scope = element.scope(); 
var elementString = '<div id="'+viewname+'" ui-view="'+viewname+'" class="viewunique"></div>'; 
$compile(element.append(elementString))(scope); 

這將視圖添加到$view變量,似乎是工作。

我的問題是:如何在狀態轉換中使用這個新視圖。我嘗試使用$ $過渡到$(),如:

$transitions.onStart({}, function($transition$) { 
    $transition$.$to().views = { 
     templateUrl : templateUrl 
    }; 
}); 

其中viewname是創建視圖的名稱,並templateUrl是正確的模板。該模板將擁有自己的控制器和東西。這將覆蓋此狀態的視圖,但不會真正起作用或者無法執行任何操作。

不知何故,我想改變過渡到這個狀態的狀態視圖,以便使用動態創建的視圖。這可能嗎? 有人知道如何做到這一點嗎?

+0

也許這可能是任何用途:https://stackoverflow.com/questions/11003916/angularjs-how-do-i-switch-views-from-a-controller-function。它描述瞭如何在控制器中更改視圖。 – DijkeMark

回答

0

好的,我做了一些你確切想要的研究。如果我理解正確,您希望在狀態更改期間更改視圖,每個視圖都有自己的範圍和控制器。

在我看來,你似乎想讓多個狀態互相運行。也許你可以看看ui-router-extras: https://github.com/christopherthielen/ui-router-extras

這個軟件包將允許你使用並行狀態和嵌套狀態,我相信這是你想要/需要的。

請參閱https://christopherthielen.github.io/ui-router-extras/#/home以獲取更多信息和工作示例。

+0

我搶劫(?)https://christopherthielen.github.io/ui-router-extras/#/home,這確實是我在找的東西。花了一些工作去實現它,但取得了很好的進展......謝謝。 –