我使用ng-repat指令在我的HTML中即时发布我的自定义指令。
但是不会评估自定义指令,如果直接在HTML上放置相同的指令,那么它就可以了。
...
<body ng-app="docsSimpleDirective">
<div ng-controller="Controller">
<div>This is a Problem</div>
<!--Here in for loop i want to us the value to call a directive-->
<div ng-repeat="var in arr">
<!--Here i am using directive with restrict: 'C' and this is not expending-->
<span class="{{var}}"></span>
</div>
<!-- here my directive named "direct" is working fine -->
<span class="direct"></span>
</div>
</body>
...
和我的Js代码是
(function(angular) {
'use strict';
angular.module('docsSimpleDirective', [])
.controller('Controller', ['$scope', function($scope) {
$scope.arr = ['direct','indirect'];
}]).directive('direct', function() {
return {
template: 'direct',
restrict: 'C'
};
}).directive('indirect', function() {
return {
template: 'indirect',
restrict: 'C'
};
});
})(window.angular);
我相信有一些编译问题,我搜索了网页,发现$ compile可以解决我的目的但无法实现。
请帮我解决我的问题。
Plunker实现相同:https://plnkr.co/edit/lYGg0UkQpNhN5NJx13Zj?p=preview
答案 0 :(得分:0)
将指令用作类是不好的做法(因为不可读) https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md#restrict-to-elements-and-attributes
然后你将一个指令作为一个类传递,但是通过插值动态地传递,这本身就是不好的做法(https://docs.angularjs.org/guide/interpolation#known-issues)。类名称被插值并且元素被渲染,但是在插值期间不会编译指令。
从指令定义中删除限制行并将其用作属性:
<span indirect></span>
然后在ng-repeat循环中使用它们,你可以检查var =&#34; direct&#34;或&#34;间接&#34;
答案 1 :(得分:0)
使用像这样的指令
.directive('direct', function() {
return {
template: 'direct',
restrict: 'A'
};
并在控制器中将restrict定义为属性。
class App:
def __init__(self, master):