AngularJS指令和字符串插值

时间:2013-08-17 11:00:32

标签: angularjs coffeescript angularjs-directive string-interpolation

上下文

我正在使用名为opensAsPopup的AngularJS指令对某些DOM元素应用Lightbox效果。

问题:

其中一些元素的动态内容来自ng-repeat指令,似乎我的opensAsPopup指令在字符串插值之前应用

字符串插值后,是否可以应用灯箱效果


HTML:

<li>
  <a href="/path/to/{{entry.id}}" opens-as-popup>Link</a>
</li>

脚本:

app.directive("opensAsPopup", [ ->
  restrict: "A"
  scope: {}
  replace: false
  transclude: false
  compile: (tElement, tAttrs) ->
    new lightbox(tElement.get(0))
])

1 个答案:

答案 0 :(得分:4)

您需要在链接功能中执行此操作。范围直到链接阶段(在编译阶段之后)才适用。另外,不要在同一元素上创建一个独立的范围(已删除scope: {}),因为这意味着您需要在链接函数中设置scope.entry.id。所以:

app.directive("opensAsPopup", [ ->
  restrict: "A"
  replace: false
  transclude: false
  link: (scope,tElement, tAttrs) ->
    new lightbox(tElement.get(0))
])