在指令的html模板中使用ng-if的麻烦

时间:2013-09-30 11:12:33

标签: angularjs angularjs-directive angularjs-scope

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

提前感谢所有人。

1 个答案:

答案 0 :(得分:0)

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

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