2014-03-24 135 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