我无法获得ng-if以在指令内进行评估。我第一次调用一个返回布尔值的方法,但无论结果是什么,ng-if都不会得到结果,它总是计算为false。ng - 如果不在内部指令中进行评估
要尝试并指出问题,我尝试了一个简单的内联表达式(下面),但是即使这样也总是计算为false。当我删除ng-if时,div显示。我究竟做错了什么?
.directive('handsUpVideoOverlay', function() {
return {
restrict: 'E',
replace: true,
scope: false,
template: '<div class="handsOffOverlay" ng-if="1>0">' +
'</div>',
link: function($scope) {
}
};
})
UPDATE
此代码工作完全作为一个独立的jsfiddle。看起来这个问题与我将这个指令添加为另一个指令的孩子的事实有关。父指令是第三方,并且手动转换它的孩子。
UPDATE
好我得到了这个工作。问题在于父指令删除了任何子指令,然后将其添加回去而不编译它们。我不得不把我自己的第三方父指令的拷贝,并在链接功能更改此:
// Make transcluding work manually by putting the children back in there
ng.element(element).append(oldChildren);
这样:
// Make transcluding work manually by putting the children back in there
for(var i = 0; i < oldChildren.length; i++) {
var template = oldChildren[i].outerHTML;
var linkFn = $compile(template);
var content = linkFn($scope);
$element.append(content);
}
感谢快速反应,但仍不为我工作。只有你在代码中可以看到的区别是明确的注释方括号已被删除。问题必须是上下文相关的。我删除了ng-if和div节目。我完全复制和粘贴你的代码,同样的问题。 –