当我在指令的控制器中绑定$scope
而不在指令设置中使用scope: {}
时,它可以正常工作。
但是我需要scope: {}
来获取指令中的已定义变量。
这是我的测试代码:
var app = angular.module("app", []);
app.directive("directive", function () {
return {
controller: function($scope){
$scope.id = 5;
}
}
});
app.directive("childDirective", function () {
return {
scope: {
id: "=user"
},
controller: function($scope){
$scope.hello = "Hello";
}
}
})
-
<html ng-app="app">
<directive>
<child-directive user="id">
{{ hello }}
</child-directive>
</directive>
</html>
http://codepen.io/anon/pen/MyEXJV
当我删除scope: { id: "=user" }
时,它有效。但我需要将id传递给控制器。
有解决方法吗?
提前致谢。
答案 0 :(得分:3)
使用隔离范围时,它仅在为指令提供的模板上有效。您可以将模板提供为字符串或templateUrl
尝试这种方式:
<directive>
<child-directive user="id"></child-directive>
</directive>
JS
app.directive("childDirective", function () {
return {
scope: {
id: "=user"
},
template:'{{ hello }} ID= {{id}}',
controller: function($scope){
$scope.hello = "Hello";
}
}
})