2016-02-24 23 views
0

所有:

我非常新的角度指令,当我遇到$来编译,有一个迷惑,说我有一个指令:

<html ng-app="mainapp"> 
<body ng-controller="main"> 
</body> 
</html> 


    var app = angular.module("mainapp", []); 
    app 
    .controller("main", function($scope){ 

    }) 
    .directive("namearea", function(){ 
     return { 
      restrict: "AE", 
      scope: { 
       conf: "=" 
      }, 
      template:"<div>{{conf.name}}</div>", 
      link: function(){} 
     } 
    }) 

而且通过意外,其他人(例如:1)使用一个令人惊讶的笨方法(只是出于好奇)来添加这个指令,如:

$compile($("body").append("<namearea conf='conf'>")) ($scope) 

这里的迷惑是:使用的是$范围设置包装namearea的范围,还是替换namearea中的范围?

感谢

+2

这是指令父级的范围。在你的用例中,它将是包含'conf ='conf''中使用的'conf'属性的对象。指令本身具有隔离范围。 – Phil

+0

@菲尔谢谢,非常清楚。 – Kuan

回答

1

这里的迷惑是:使用的是$范围来设置它包装namearea,或更换内部namearea范围的范围是什么?

您传入的$范围是生成的namearea指令中的$范围。这将可以访问此$作用域属性

例:

$compile($("body").append("<namearea conf='myvar'>")) ($scope) 

然后namearea能够访问$ scope.myvar两种方式结合(如你声明)。 namearea是隔离的作用域,我不会被您传递的$作用域取代。