angular $ compile范围绑定过程

时间:2016-02-24 00:53:00

标签: angularjs

所有

我对angular指令很新,当我遇到$ compile时,有一个混淆,说我有一个指令:

<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(){}
        }
    })

偶然地,某人(例如:我)使用了一种非常愚蠢的方式(仅仅是为了好奇)来添加这个指令,如:

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

这里的混淆是:$ scope用于设置包装namearea的范围,还是替换namearea中的范围?

谢谢

1 个答案:

答案 0 :(得分:1)

  

这里的混淆是:$ scope用于设置包装namearea的范围,还是替换namearea中的范围?

传入的$ scope是生成该namearea指令的$ scope。它可以访问这个$ scope属性

例如:

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

然后namearea能够以双向绑定方式访问$ scope.myvar(如您所声明的那样)。 namearea是隔离范围,我不会被你传递的$ scope替换。