Я довольно долго боролся с этим, и я не могу понять, как решить эту проблему.Директивы элементов вложения не могут получить доступ к объекту родительской директивы
Я пытаюсь создать директиву сетки, которая содержит директивы столбца для описания сетки, но столбцы не будут элементами и просто добавят столбцы в массив, объявленный в области директивы grid.
Я думаю, что лучший способ объяснить эту проблему, чтобы посмотреть просмотреть код:
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/
Я попытался использовать компиляцию, c ontroller и link, но по какой-то причине столбцы родительской сетки не определены.
Как это исправить?
Edit: Когда я извлекаю заменить, templateUrl, transclude из mygrid директивы, я могу получить объем от директивы столбца.
Благодаря
Любой успех в этом вопросе? –
Да, в более поздних версиях angularJS вы можете получить свою родительскую директиву с помощью $ scope. $$ childHead –