我最近开始使用Angular.JS,我已经到了一个我不知道如何正确处理它的场景。
让我解释一下我拥有什么以及我想做什么(我想这是处理这种情况的正确方法):
通过templateUrl加载模板并使用一个属性(visibilidad)定义自己的控制器的指令(panelMenu)。 (该属性值应该作为我工作的服务的结果收集,但是为了示例的容易性,我将删除该部分)
.directive('panelMenu', function () {
return {
restrict: 'E',
templateUrl: './partials/panelMenu.html',
replace: true,
transclude: false,
controller: ['$scope', function ($scope) {
$scope.visibilidad = false;
} ],
link: function (scope, element, attrs) {
}
};
})
指令正在加载的模板(panelMenu.html),它使用ng-if附加到指令控制器内定义的visibility属性,以dinamycally方式添加/删除html。
panelMenu.html:
<div class="panel-menu" ng-if="visibilidad">
<a class="brand" href="#">Menú [Tablet] - Valor {{visibilidad}}</a>
</div>
这就是我从浏览器控制台获得的内容:
错误:[$ compile:ctreq]无法找到指令'ngIf'所需的控制器'panelMenu'!
我一直在阅读很多关于ng-if和scopes的工作原理......但是假设ng-if应该继承父范围(指令中定义的控制器)。我对吗?
BTW,我正在使用index.html上的自定义指令:
<panel-menu></panel-menu>
除了主要问题,我想知道我是否正确地执行了,或者是否应该将ng-if条件放在指令标记上(访问我之前提到的服务以获取值)在html模板上。
提前感谢所有人。
答案 0 :(得分:0)
我也遇到了这个问题:http://plnkr.co/edit/I7ibaj66hLX7uAgfENdk?p=preview
它似乎被降级为字符串值 - - - 在我的plnkr中,我能够让布尔值正常运行