2014-03-24 57 views
1

我在我的主角應用程序中有3個控制器和2個div。讓我們說左邊和右邊的div和控制器A,B和C.在開始時,我用控制器A設置左邊的div,用控制器B設置右邊的div。我想添加一個按鈕來改變左邊的div來使用控制器C並運行它。這可能嗎?我堅持了三天。我認爲這是一個簡單的問題,因爲這只是改變控制器並重新運行新控制器的問題。動態更改控制器

回答

0

我建議你去嘗試AngularUI路由器:https://github.com/angular-ui/ui-router

你的情況,你可以有兩種狀態,它都具有相同的模板,但不同的控制器。

例子:

myApp.config(function($stateProvider) { 
    $stateProvider 
    .state('route1', { 
     url: "/route1", 
     views: { 
     "viewA": { 
      templateUrl: "templates/a.html", 
      controller: "AController" 
     }, 
     "viewB": { 
      templateUrl: "templates/b.html", 
      controller: "BController" 
     } 
     } 
    }) 
    .state('route2', { 
     url: "/route2", 
       views: { 
     "viewA": { 
      templateUrl: "templates/a.html", 
      controller: "CController" 
     }, 
     "viewB": { 
      templateUrl: "templates/b.html", 
      controller: "BController" 
     } 
     } 
    }) 
}); 
+0

謝謝。在我的情況下,模板和控制器也不同。昨天,我嘗試了角度路線。它的工作原理,但它重新加載左側和右側。我只需要加載其中的一個。例如,對於路由收件箱,我將在左側顯示它,並在右側顯示另一個功能。可能嗎?我是angularjs的新手。 – Bharata

+0

我認爲有可能使其中一個視圖不能重新加載,但在這種情況下,不會重新加載的狀態必須是另一個狀態的父狀態。這意味着,該div模板必須在右div模板內(使用ui-view指令)。 – brisky

+0

謝謝你的解釋。我說錯了。兩個視圖都動態變化,但取決於菜單。如果點擊某個菜單,則會更新左側。如果是另一個,它會更新權利。也許你可以把它想象成一個電子郵件查看器。左側是列表,右側是左側點擊的內容。但是,它添加了一個菜單,可以在左側或右側顯示另一個「頁面」。基本上,如果點擊某個菜單,我只想定義哪一方將被更新以及將顯示哪些內容。 – Bharata