AngularJS - 制定指令“范围敏感”

时间:2013-07-11 11:14:03

标签: angularjs angularjs-directive angularjs-scope

我有一个包含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的指令时缺少一些重要的东西。

1 个答案:

答案 0 :(得分:0)

如果你想让一个指令基于范围表现不同,那么检查一些范围属性对我来说似乎是完全合理的。

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