Javascript 带有范围变量的AngularJS set ng控制器

Javascript 带有范围变量的AngularJS set ng控制器,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我有一个模板(用于模式弹出窗口),根据其功能,应加载不同的控制器: <div id="MsgBoxBack" ng-controller="{{notification.ctrl}}"> 当我试图通过范围变量设置控制器名称时,出现以下错误: Error: [ng:areq] Argument 'notification.ctrl' is not a function, got string 那么,我应该如何基于范围变量设置控制器呢 我有一个关于使用范围变量设置ng click函

我有一个模板(用于模式弹出窗口),根据其功能,应加载不同的控制器:

<div id="MsgBoxBack" ng-controller="{{notification.ctrl}}">
当我试图通过范围变量设置控制器名称时,出现以下错误:

Error: [ng:areq] Argument 'notification.ctrl' is not a function, got string
那么,我应该如何基于范围变量设置控制器呢

我有一个关于使用范围变量设置ng click函数的相关问题

更新

吉拉法给了我一个想法,让我以不同的方式处理这个问题。 我没有更改控制器,而是选择使用一个公共控制器,并基于范围变量使用switch语句:

<div id="MsgBoxBack" ng-controller="notification">


这并不能解决原来的问题,但似乎是一个简单的解决办法。如果有人知道更好的方法,请告诉我,我很乐意更新问题或接受更好的答案。

尝试使用ngRoute。使用它,您可以为根元素分配不同的控制器和模板,并通过更改位置在它们之间切换。

我不想更改位置,这应该是一个简单的可重用模式窗口模板,显示在网站的不同页面中,并且需要一个不同的控制器,这取决于它在特定页面上的功能。我将使用不同的元素,并将ngIf或ngSwitch指令应用于它们。或者使用指令定义对象创建一个指令。在指令函数中定义你想要的控制器,我会检查这些,看看我是否可以使用它们!有一个特点,在角度。我还没有在文档中找到它。但在指令定义对象中,可以将字符串传递给控制器参数。因此,您可以在单独的文件中定义控制器,然后通过将其名称传递给指令定义对象,在指令中使用它。
<div id="MsgBoxBack" ng-controller="notification">
app.controller('MainCtrl', ['$scope', function($scope){
    $scope.notification = {
        ctrl: 'logout', 
        //...
    };
}]);

app.controller('notification', ['$scope', function($scope){
  switch($scope.notification.ctrl) {
    case 'logout':
      console.log('logout');

      //...

      break;
  }

}]);