我有一个包含2个容器的页面,每个容器都包含图像。我想为这些图像添加一些特定的视觉属性和功能。这些特定的东西在两个存放处都很相似,但却不一样。所以我想为2种类型的图像创建一个指令,但我希望它的行为有点不同,具体取决于放置的存储库(实际上,范围)。检查指令正文中元素的范围:
studio.directive('orientable', function () {
return {
link: function(scope, element, attrs) {
if(scope.id=="Depository1"){
// give to element some specific behaviour
}else if(scope.id=="Depository2"){
// give to element another specific behaviour
}
}
}
对我来说,这似乎很难看
我不能使用传递参数到指令,因为然后图像的标签将变为不可读,并且当有许多图像时它将是灾难。我不想要两个指令因为它们基本相同。答案 0 :(得分:0)
如果你想让一个指令基于范围表现不同,那么检查一些范围属性对我来说似乎是完全合理的。
我认为你最接近Angular中的多态性是将共享内容(数据,函数等)放入服务中,然后将该服务注入到你想要多态的地方(指令,控制器,其他服务等) )。