1

我最近开始使用 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模板。

提前感谢大家。

4

1 回答 1

0

我也遇到了这个问题:http ://plnkr.co/edit/I7ibaj66hLX7uAgfENdk?p=preview

它似乎降级为字符串值 - - - 在我的 plnkr 中,我能够让布尔值正常运行

于 2013-10-27T04:43:08.653 回答