0

私はかなり重要な Angular-js アプリケーションを初めて構築しており、物事を成し遂げる方法についていくつかの直感を確立しようとしています。ほとんどのことは理にかなっていますが、特に困惑するパターンが 1 つあります。

ng-switch 内に「include」スタイル ディレクティブを配置すると、無視されます。私は ng-switch 、 ng-include 、および ng-transclude のほぼすべてのスタイルを試して、望ましい動作を達成するために考えましたが、役に立ちませんでした。これが許可されないことを示すドキュメントや、同等のスタイルのパターンに気づいていません。

これが私がやろうとしたことの例です:

<div ng-switch="is_logged_in()">
    <div ng-switch-when="true">
        logged-in:
        <div ng-include="'views/logout.html'"> </div>
    </div>
    <div ng-switch-default>
        not-logged-in
    </div>
</div>

$scope.is_logged_in()true を返すと、ログアウト フォームが表示されるという予想される動作です。

私が見る動作は、「logged-in:」は表示されますが、インクルードは表示されません。

Angular-js のさまざまなバージョンを試しました。ネットワーク トラフィックを調べたところ、インクルードが実際にフェッチされていることがわかりましたが、これを機能させることができません。ディレクティブを使用して独自のテンプレート制御構造を構築しようとしたときに、同じ動作マニフェストが発生しました。

私が見たほとんどの例がこれをかわす方法は、トランスクルージョンされたコンテンツのさまざまなセクションを手動で表示/非表示にするディレクティブで JS を使用することです。

ありがとう!

4

1 に答える 1

0

ng-include を使用している間、私は常にコントローラーの変数にパスを割り当てます。

$scope.logoutlink ='views/logout.html'

ビューでは、次のように割り当てることができます

<div ng-include="{{logoutlink}}"> </div>

JSfiddle リンクを投稿すると役立ちます。

于 2013-09-02T03:14:15.290 に答える