我的理解是指令主要应该关注DOM交互和模板。设置与$scope
相关的应用程序逻辑是控制器的责任。
然而,Angular允许您为指令本身创建范围,例如使用{ scope: true }
。如果你这样做,你应该像在控制器构造函数中那样初始化 - 在post-link函数中?这似乎是对指令的不当使用,因为它不关心DOM。
当适当使用Angular指令范围而不是创建必须与该指令一起使用的控制器时呢?
答案 0 :(得分:1)
然而,Angular允许您为指令本身创建一个范围, 例如{scope:true}。如果你这样做,你应该什么时候 像在控制器构造函数中那样初始化 - 在 后链接功能?这似乎是一个不恰当的用途 指令,因为它不关心DOM。
指令可以有自己的控制器,由controller
选项定义。该控制器具有与应用程序控制器相同的功能:为指令提供行为。也就是说,我认为初始化范围的正确位置是指令的控制器,而不是其链接功能。
我认为指令的控制器是你操作范围和指令链接功能的地方,你操作DOM的地方。这个SO question对此有一些很好的见解。
什么时候使用Angular指令范围而不是 创建一个必须与该指令一起使用的控制器?
我可以想到两个场景:
scope: true
。 scope: {}
。我最近实施了一个指令并使用控制器功能来驱动它的行为 用于操作DOM的链接函数。也许您有兴趣查看它。链接here。