我的理解是指令应该主要关注 DOM 交互和模板。设置相关的应用程序逻辑$scope
是控制器的责任。
然而 Angular 允许您为指令本身创建一个范围,例如 with { scope: true }
。如果你这样做,你什么时候应该像在你的控制器构造函数中那样初始化——在链接后函数中?这似乎是对指令的不当使用,因为它与 DOM 无关。
什么时候适合使用 Angular 指令范围而不是创建必须与该指令一起使用的控制器?
我的理解是指令应该主要关注 DOM 交互和模板。设置相关的应用程序逻辑$scope
是控制器的责任。
然而 Angular 允许您为指令本身创建一个范围,例如 with { scope: true }
。如果你这样做,你什么时候应该像在你的控制器构造函数中那样初始化——在链接后函数中?这似乎是对指令的不当使用,因为它与 DOM 无关。
什么时候适合使用 Angular 指令范围而不是创建必须与该指令一起使用的控制器?
然而 Angular 允许您为指令本身创建一个范围,例如使用 { scope: true }。如果你这样做,你什么时候应该像在你的控制器构造函数中那样初始化——在链接后函数中?这似乎是对指令的不当使用,因为它与 DOM 无关。
指令可以有自己的控制器,由controller
选项定义。该控制器具有与应用程序控制器相同的功能:为指令提供行为。也就是说,我认为初始化范围的正确位置是指令的控制器,而不是它的链接函数。
我认为指令的控制器是您操作范围的地方,而指令的链接功能是您操作 DOM 的地方。这个SO question对这个问题有一些很好的见解。
什么时候适合使用 Angular 指令范围而不是创建必须与该指令一起使用的控制器?
在我的脑海中,我可以想到两种情况:
scope: true
. scope: {}
.我最近实现了一个指令,并使用控制器函数来驱动它的行为和链接函数来操作 DOM。也许您有兴趣检查一下。链接在这里。