我一直在努力与此相当一段时间,我无法弄清楚如何解决这个问题。嵌套元素指令无法访问父指令范围
我想做一个网格指令,其中包含列指令来描述网格,但列不会是元素,只会将列添加到在网格指令的范围内声明的数组。
我想解释这个问题的最好办法是查看查看代码:
var myApp = angular.module('myApp', [])
.controller('myCtrl', function ($scope, $http) {
})
.directive('mygrid', function() {
return {
restrict: "E",
scope: true,
compile: function ($scope) {
debugger;
$scope.Data = {};
$scope.Data.currentPage = 1;
$scope.Data.rowsPerPage = 10;
$scope.Data.startPage = 1;
$scope.Data.endPage = 5;
$scope.Data.totalRecords = 0;
$scope.Data.tableData = {};
$scope.Data.columns = [];
},
replace: true,
templateUrl: 'mygrid.html',
transclude: true
};
})
.directive('column', function() {
return {
restrict: "E",
scope: true,
controller: function ($scope) {
debugger;
$scope.Data.columns.push({
name: attrs.name
});
}
};
});
这里是HTML标记:
<body ng-app="myApp">
<div ng-controller="myCtrl">
<input type="text" ng-model="filterGrid" />
<mygrid>
<column name="id">ID</column>
<column name="name">Name</column>
<column name="type">Type</column>
<column name="created">Created</column>
<column name="updated">Updated</column>
</mygrid>
</div>
此外,你可以测试jsfiddle中的实际代码:http://jsfiddle.net/BarrCode/aNU5h/
我试着用compile,c控制器和链接,但由于某些原因,父网格的列未定义。
我该如何解决这个问题?
编辑: 当我删除替换,templateUrl,transclude从mygrid指令,我可以从列指令的范围。
感谢
这个成功吗? –
是的,在更高版本的angularJS中,您可以使用$ scope。$ child childHead –