所有
我对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中的范围?
谢谢
答案 0 :(得分:1)
这里的混淆是:$ scope用于设置包装namearea的范围,还是替换namearea中的范围?
传入的$ scope是生成该namearea指令的$ scope。它可以访问这个$ scope属性
例如:
$compile( $("body").append("<namearea conf='myvar'>") ) ($scope)
然后namearea能够以双向绑定方式访问$ scope.myvar(如您所声明的那样)。 namearea是隔离范围,我不会被你传递的$ scope替换。