Javascript 如何根据变量更改指令要使用的控制器?

Javascript 如何根据变量更改指令要使用的控制器?,javascript,angularjs,Javascript,Angularjs,我希望能够根据范围变量的值为指令提供不同的控制器。我们一直在沿着这些路线搜索,但所有的结果都是关于$route的配置。下面是一个示例: 我想根据模型为我的指令dir1提供一个不同的控制器 代码如下 角度。模块'mod1',[] .指令'dir1',函数{ 返回{ 限制:“A”, 范围:{ 型号:'=' }, 控制器:函数$scope{ 返回控件$scope.model.something; } }; }; 函数控制参数{ ifparam==1返回ctrl1; 否则ifparam==2返回ctr

我希望能够根据范围变量的值为指令提供不同的控制器。我们一直在沿着这些路线搜索,但所有的结果都是关于$route的配置。下面是一个示例:

我想根据模型为我的指令dir1提供一个不同的控制器

代码如下

角度。模块'mod1',[] .指令'dir1',函数{ 返回{ 限制:“A”, 范围:{ 型号:'=' }, 控制器:函数$scope{ 返回控件$scope.model.something; } }; }; 函数控制参数{ ifparam==1返回ctrl1; 否则ifparam==2返回ctrl2; 否则返回ctrl3; } 函数ctrl1$scope$http{ //有些事 } 函数ctrl2$scope,$http{ //什么 } 函数ctrl3$scope$http{ //有些事
}我认为您不需要使用$scope。只需放置一个返回字符串或类似三元的控制器的函数:a==b?“控制器1':“控制器2”。它应该自动注入,具体取决于您的字符串。为什么需要不同的控制器?你期望每个人的行为有什么不同?也许如果我们对您试图完成的事情有更好的理解,可能会有更好的方法。@sam但是我将使用什么控制器的条件取决于范围变量。我理解你说的对吗?@deitch我需要根据范围变量有不同的行为。如果不是这样,或者只是不同的指令就可以了。只是想这样试试…?不同行为的定义才是最重要的。它是否可以基于范围变量进行更改?