如何编写一个angularjs指令,既使用范围又使用属性,并通过编译部分引用它?
我想编写一个利用自定义属性的指令,如下所示:如何编写一个angularjs指令,既使用范围又使用属性,并通过编译部分引用它?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我想编写一个利用自定义属性的指令,如下所示: <plant-stages title="Exploration<br/>du cycle de<br/>développement<br/>de la plante" ></plant-stages> app.directive('plantStages', function () { return { restrict: 'AE', te
<plant-stages
title="Exploration<br/>du cycle de<br/>développement<br/>de la plante"
></plant-stages>
app.directive('plantStages', function () {
return {
restrict: 'AE',
templateUrl: 'corn.figure.plant.stages.html',
link: function (scope, element, attrs) {
scope.title = attrs.title;
}
};
});
<figure class="cornStages">
<div>
<p>{{title}}</p>
</div>
<div ng-repeat="stage in stages">
<div class="stage{{stage.stage}}"></div>
<div>
BBCH : {{stage.bbch}}<br/>
{{stage.displayName}}
</div>
</div>
</figure>
部分详情如下:
<plant-stages
title="Exploration<br/>du cycle de<br/>développement<br/>de la plante"
></plant-stages>
app.directive('plantStages', function () {
return {
restrict: 'AE',
templateUrl: 'corn.figure.plant.stages.html',
link: function (scope, element, attrs) {
scope.title = attrs.title;
}
};
});
<figure class="cornStages">
<div>
<p>{{title}}</p>
</div>
<div ng-repeat="stage in stages">
<div class="stage{{stage.stage}}"></div>
<div>
BBCH : {{stage.bbch}}<br/>
{{stage.displayName}}
</div>
</div>
</figure>
{{title}}
BBCH:{{stage.BBCH}}
{{stage.displayName}
部分使用了一些范围模型变量。
而且{title}}应该支持嵌入它的视图之外的纯HTML注入,因此应该进行编译。我试图支持这一点,但没有成功
我应该做什么修改来编译HTML
一个额外的问题:当我传入属性时,我在作用域中创建了一个虚拟title变量,该变量应该只在本地存在。如何更改以处理此问题?如果要在自定义指令中包装HTML,请查看
transclude
选项():
我将此添加到了。是否要将HTML放置在标记属性中,然后在指令中使用它?是否要查找
范围:{title:@}
?看见这意味着指令作用域上的title是名为title
@stevuu:的DOM属性的评估值,正如我在问题中提到的,如果我使用作用域:{},我将丢失呈现指令(特别是“stages”)所需的控制器作用域数据,我将使用scope:{}
将控制器作用域中的数据附加到指令作用域,然后。例如,范围:{stages:=“}
与
一起使用。然后,stages
属性将指令指向控制器数据。假设控制器作用域上的数据在指令中可用是一个不可见的依赖项,但用scope
指向它会使其可见。当您只需要对父作用域中的少量变量进行直接绑定时,我推荐stevuu推荐的方法。它从父作用域创建一个独立的作用域,但仍允许您在指令中修改特定属性。根据所有注释,我创建了JSFIDLE,但它与parent.insertBefore@Sebastian2的一个问题有关:1)我需要通过一些conning标记传递许多属性2)查看部分中不起作用的hg repeat(指令内部没有写入任何内容)。实际上,我在inspector中看到FIDLE中存在一个问题(对于parent.insertBefore未定义)我忽略了您在ng transclude
标记中使用了ng repeat
。而是使用例如
确定。但我的一个初始问题尚未解决:我想通过title属性传递我的html并正在编译(您重写为不必要的那个)。