【发布时间】:2013-05-22 11:51:22
【问题描述】:
我已经为此苦苦挣扎了很长一段时间,但我不知道如何解决这个问题。
我正在尝试创建一个网格指令,其中包含用于描述网格的列指令,但列不会是元素,只会将列添加到在网格指令范围内声明的数组中。
我认为解释这个问题的最好方法是查看查看代码:
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/
我尝试使用编译、控制器和链接,但由于某种原因,父网格的列未定义。
我该如何解决这个问题?
编辑: 当我从 mygrid 指令中删除 replace、templateUrl、transclude 时,我可以从 column 指令中获取范围。
谢谢
【问题讨论】:
-
这有什么成功吗?
-
是的,在 angularJS 的更高版本中,您可以使用 $scope.$$childHead 获取父指令
标签: angularjs element angularjs-directive