首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从隔离作用域访问父作用域

从隔离作用域访问父作用域
EN

Stack Overflow用户
提问于 2014-06-26 05:06:29
回答 1查看 83关注 0票数 0

我正在尝试编写attribute指令,它包装元素,并用一些其他的东西来装饰它,以及附加的指令。我需要保持元素内部的内容完好无损。如下所示:

代码语言:javascript
复制
app.controller 'myCtrl', ($scope)->
  $scope.name = "Gwendolyn"

app.directive 'niceName',($compile)->
  restrict: 'A'
  replace: yes
  scope: niceName:"="
  template: (element, attrs)->
      "<div> 
           <div style='background:lightgray'> 
                #{element.html()}                
           </div>
           <div> 
              <h1>{{nice}}</h1>
           </div>
       </div>"

  controller: ($scope, $element)->
    $scope.$watch 'hover',->
      $scope.nice = if $scope.hover then $scope.niceName else ''

  compile:(element, attrs)->
     element.attr('ng-mouseover',"hover = true")
     element.attr('ng-mouseout',"hover = false")
     element.removeAttr('nice-name') # removing itself to avoid from falling into infinite loop

     pre:(scope, iElement, iAttrs)->
        $compile(iElement)(scope)

标记:

代码语言:javascript
复制
<div nice-name="uglyname">
   <h2>{{uglyname}}</h2>
<div>

现在这个东西根本不起作用了,它不会呈现h2部件,因为现在uglyname对于当前作用域是未知的。我可以通过传递父作用域来编译它,但是它完全破坏了我的控制器。(参见下面的jsbin )所以我必须以某种方式编译应用父作用域的元素的内容,将其添加到模板中,然后再次编译应用局部作用域?或者我需要找到一种方法来继承父作用域的属性?或者我不能用attribute指令来做?也许我需要使用元素指令和转换?有什么想法吗?

jsbin

EN

回答 1

Stack Overflow用户

发布于 2014-06-26 05:13:42

我会按照@marfarma建议的那样做,并将html更改为不包含括号,因此:

代码语言:javascript
复制
 scope: { niceName: "="},

代码语言:javascript
复制
 nice-name="uglyname"
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24418570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档