0

我有一个页面,上面有 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
              }
    }    
}

在我看来很难看。
我不能使用将参数传递给指令,因为那样图像的标签将变为不可读,并且当有很多图像时,它将是灾难。我不想要两个指令,因为它们基本相同。
所以我想要一个指令,但不知何故它必须是“多态的”。这里有可能继承某种继承吗?我认为我在理解 Angular 指令方面遗漏了一些重要的东西。

4

1 回答 1

0

如果您希望单个指令根据范围表现不同,那么检查某些范围属性对我来说似乎是完全合理的。

我认为在 Angular 中最接近多态性的方法是将共享的东西(数据、函数等)放入服务中,然后将该服务注入到您想要多态性的地方(指令、控制器、其他服务等)。

于 2013-07-11T17:09:35.273 回答