【发布时间】:2015-01-01 08:05:31
【问题描述】:
在我的应用程序中,我有这样的指令:
.directive('nodeList', function($compile) {
return {
restrict: 'E',
terminal: true,
scope: {
nodes: '=ngModel',
deleteArticle: '&',
editArticle: '&'
},
link: function ($scope, $element, $attrs) {
if (angular.isArray($scope.nodes)) {
$element.append('<accordion close-others="true"><node ng-repeat="item in nodes" ng-model="item" delete-article="deleteArticle(node_item)" edit-article="editArticle(node_item)"></node></accordion>');
}
$compile($element.contents())($scope.$new());
}
};
})
.directive('node', function($compile) {
return {
restrict: 'E',
terminal: true,
scope: {
node: '=ngModel',
deleteArticle: '&',
editArticle: '&'
},
link: function ($scope, $element, $attrs) {
if (angular.isArray($scope.node.Options) && $scope.node.Options.length > 0) {
$element.append('<accordion-group><accordion-heading>{{node.Title}} <a href=\"javascript:void(0)\" ng-click=\"editArticle({node_item: node})\" data-toggle=\"modal\" data-target=\"#new-article\" class=\"action\"><i class=\"glyphicon glyphicon-edit\"></i></a></accordion-heading><node-list ng-model="node.Options"></node-list>{{node.Content}}</accordion-group>');
} else {
$element.append('<accordion-group><accordion-heading>{{node.Title}} <a href=\"javascript:void(0)\" ng-click=\"editArticle({node_item: node})\" data-toggle=\"modal\" data-target=\"#new-article\" class=\"action\"><i class=\"glyphicon glyphicon-edit\"></i></a></accordion-heading>{{node.Content}}</accordion-group>');
}
$compile($element.contents())($scope.$new());
}
};
})
还有这样的html:
<node-list ng-model="articles" delete-article="deleteArticle(node_item)" edit-article="editArticle(node_item)"></node-list>
在控制器中:
$scope.editArticle = function(vArticle) {}
当我只有一个指令时 - 一切都很清楚,但是当我的指令调用另一个指令时如何传递参数?这是真的吗?以及如何?
【问题讨论】:
-
如果您为我们创建一个 jsfiddle 或 plnkr,会更容易帮助您(并获得赏金)
-
@Cherniv hm,我不知道如何添加 ui 引导程序...embed.plnkr.co/LlzPgsWrwcYd59sa2wxd/preview
-
在编译 DOM 时,为什么需要在隔离范围内使用 $scope.$new()?
-
@pankajparkar 渲染孩子的孩子
标签: angularjs angularjs-directive directive