AngularJs有条件地将自定义指令应用于HTML
是否有一种基于某些条件将自定义指令应用于HTML模板的正确方法 例如:AngularJs有条件地将自定义指令应用于HTML,angularjs,Angularjs,是否有一种基于某些条件将自定义指令应用于HTML模板的正确方法 例如: 只有在定义了{item}时,我才需要应用“我的自定义指令” 这感觉像是设计问题,而不是技术问题 与其有条件地应用自定义指令,不如简单地找出在指令内部要做什么。从语义上讲,这更有意义 例如,如果在本例中未定义项,则不要在指令内执行任何操作。这取决于您的要求,如果您使用它作为元素而不是属性,则可以使用ng if实现 对于下面代码中的ex,当项未定义时,li不会出现在dom中 <my-custom-directive="{{
只有在定义了{item}时,我才需要应用“我的自定义指令” 这感觉像是设计问题,而不是技术问题 与其有条件地应用自定义指令,不如简单地找出在指令内部要做什么。从语义上讲,这更有意义
例如,如果在本例中未定义项,则不要在指令内执行任何操作。这取决于您的要求,如果您使用它作为元素而不是属性,则可以使用
ng if
实现
对于下面代码中的ex,当项未定义时,li不会出现在dom中
<my-custom-directive="{{item}}" ng-if="item">
<li>{{item}}</li>
</my-custom-directive>
{{item}}
使用ng如果
,则在满足条件之前不会插入DOM
AngularJS在DOM中留下注释供其参考
因此,在定义{{item}}
之前,
根本不在DOM中
如果需要从变量向DOM动态添加指令,请使用$compile provider。我给自己制定了一个关于这些事情的指令
angular.module('test', []).directive('directiveName', ['$compile', function($scope) {
return {
link: function($scope, element, attrs, ctrl) {
element.replaceWith($compile(attrs.direciveName)($scope))
}
}
}]);
angular.module('test',[]).directive('directiveName',['$compile',function($scope){
返回{
链接:函数($scope、element、attrs、ctrl){
replaceWith($compile(attrs.direciveName)($scope))
}
}
}]);
您可以这样使用它:
<div directive-name="{{customDirectiveName}}"></div>
{{customDirectiveName}}
是其他地方的$scope变量。从这一点上,您可以对从服务器等接收到的JSON对象重复ng 如果解决您的问题,ng会吗?类似于ng if=“item”
然后显示您的方向是的,也可以使用ng show,具体取决于您是否要渲染到dom或not@aw04ng show和ng if之间有区别,ng if从dom中删除元素,而且angular也不一样,在ng show/ng hide的情况下,它不会从dom中删除元素,并且会继续监视。是的,有时也可以,建议对可能会发生很大变化的项目使用它。我只是指出这是一种选择