2013-09-24 60 views
-1

我正在创建一个简单的指令,但是我一开始就卡住了。我的问题是,我无法从帖子功能中的范围读取属性。 Here是我的代码:如何从父范围读取范围属性

<div mod type="{{subnet.isDynamic | type }}"></div> 


    networkInterfaces.directive('mod', function() { 


    return { 

     scope: { 
      type: '@' 
     }, 


     link: function (scope, iElement, iAttrs, controller) { 


      console.log(scope.type); 


      if (scope.type == "Static") { 
       iElement.css('background', 'blue'); 
      } 

      if (scope.type == "Dynamic") { 
       iElement.css('background', 'green'); 
      } 

     } 
    } 
}); 
+0

问题的问题是什么?你为什么不投票呢? – Adelin

+0

有趣。你解决了哪个版本的问题? – AlwaysALearner

+0

1.2.0.rc.2版本 – Adelin

回答

1

你scope属性是真的错了,你不要在这里需要它。

的工作plnkr这里:http://plnkr.co/edit/ezbzad?p=preview

请参考文档的理解指令内的scope属性:http://docs.angularjs.org/guide/directive

但是,如果你真的想用刚刚做的:

app.directive("mod", function(){ 

     return { 
     scope: { 
      value: "@value" 
     }, 
     link: function(scope, element, attrs){ 
      console.log(scope.value); 
     } 
     } 


}); 

带{}的范围属性创建一个新的隔离范围,因此您无法访问您的值。 附加值:“@value”范围绑定到值属性,但是注意的是,语法是一个JavaScript对象语法是:

value : "@value"而不是value = "@value"

哦,和最后一件事:如果你的指令是调用mod ...在你的DIV 你的属性是modsomeDirective

+0

感谢您的答案,它显然有效,但不是在我的情况!我在我的代码中尝试过它,但它不起作用,我不知道:) – Adelin

+0

如果在范围内属性{internalValue:“@value”},那么你必须console.log(scope.internalValue)。你明白吗 ? –

+0

是的,我确实了解它!在你的例子中,它仍然不起作用,你没有任何范围:{prop:'@ value'}! – Adelin