Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编写一个angularjs指令,既使用范围又使用属性,并通过编译部分引用它?_Angularjs_Angularjs Directive - Fatal编程技术网

如何编写一个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&nbsp;: {{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&nbsp;: {{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并正在编译(您重写为不必要的那个)。