有些地方似乎将 Controller 功能用于指令逻辑,而其他地方则使用链接。 angular 主页上的选项卡示例使用 Controller 作为一个指令并使用链接作为另一个指令。两者有什么区别?
最佳答案
我将扩展您的问题并包括编译功能。
'link'
属性是定义。)'compile'
作用域上的表达式)以及更新 DOM(即操作 iElement = 单个实例元素)。它在模板被克隆后执行。例如,在 $watch
内,链接函数在<li ng-repeat...>
之后执行模板 (tElement) 已为该特定 <li>
克隆(到 iElement)元素。一个 <li>
允许指令被通知范围属性更改(范围与每个实例相关联),这允许指令将更新的实例值呈现给 DOM。 $watch
在其 Controller 上创建一个函数(而不是在 this
上),请参阅 'this' vs $scope in AngularJS controllers . 一般来说,你可以放置方法,
$scope
等进入指令的 Controller 或链接函数。 Controller 将首先运行,这有时很重要(请参阅此 fiddle,它记录 ctrl 和链接函数何时使用两个嵌套指令运行)。正如乔希在 comment 中提到的,您可能希望将范围操作功能放在 Controller 中,以便与框架的其余部分保持一致。
关于javascript - 定义指令时 'controller' 、 'link' 和 'compile' 函数之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19034257/