我最近开始使用 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 附加到指令控制器中定义的可见性属性来动态地添加/删除 html。
面板菜单.html:
<div class="panel-menu" ng-if="visibilidad">
<a class="brand" href="#">Menú [Tablet] - Valor {{visibilidad}}</a>
</div>
这就是我从浏览器控制台得到的:
错误:找不到指令“ngIf”所需的 [$compile:ctreq] 控制器“panelMenu”!
我已经阅读了很多关于 ng-if 和范围如何工作的内容......但假设 ng-if 应该从父范围(在指令上定义的控制器)继承。我对吗?
顺便说一句,我在 index.html 上使用自定义指令,如下所示:
<panel-menu></panel-menu>
除了主要问题之外,我还想知道我是否做得正确,或者是否应该将 ng-if 条件放在指令标签上(访问我之前提到的服务以获取值)而不是 html模板。
提前感谢大家。