私は最近 Angular.JS を使い始めましたが、それを正しく処理する方法がわからないというシナリオに到達しました。
私が持っているものと私がやろうとしていることを説明しましょう(そのシナリオを処理する正しい方法だと思います):
templateUrl を介してテンプレートをロードし、1 つのプロパティ (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 を追加/削除します。
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とスコープがどのように機能するかについて多くのことを読んできました...しかし、ng-ifは親スコープ(ディレクティブで定義されたコントローラー)から継承する必要があると想定されています。私は正しいですか?
ところで、私は次のように index.html でカスタム ディレクティブを使用しています。
<panel-menu></panel-menu>
主な問題に加えて、私はそれを正しく行っているかどうか、または ng-if 条件をディレクティブタグ (値を取得するために前に述べたサービスにアクセスする) に配置する必要があるかどうかを知りたいと思います。テンプレート。
よろしくお願いします。