在custom指令中动态更改ng-if

时间:2016-04-13 08:09:27

标签: javascript angularjs coffeescript pug

有以下代码(Jade):

    img(
      data-ng-src = "{{ ctrl.getAttachmentPreview(attachment) }}",
      data-ng-if  = "attachment.media_type == 'image'",
      data-image-error = "xxx"
    )

我的自定义指令(咖啡):

module.exports = (app) ->
  app.directive 'imageError', ->
    restrict: 'A',
    link: ($scope, el, attrs, ctrl) ->
      el.attr('data-ng-if', 'false')

它是原型。我想使用' ng-if'在我的自定义指令中隐藏元素,但此代码不起作用(元素具有' data-ng-if' with' false'值,但仍然可见)。我该如何解决?提前致谢

1 个答案:

答案 0 :(得分:0)

ng-if告诉Angular注意$scope并在$scope更改它时评估给定的表达式,包括DOM节点,具体取决于结果。

直接操纵它不会做任何事情。

相反,操纵$ scope:

module.exports = (app) ->
  app.directive 'imageError', ->
    restrict: 'A',
    link: ($scope, el, attrs, ctrl) ->
      $scope.attachment = media_type: 'image'