7

外部 HTML ファイルからコンテンツをロードするディレクティブがあります。このディレクティブに渡されるのは、その HTML フラグメントのレンダリングに使用されるスコープ データです。例えば

<div class="{{cls}}" data-obj="{{obj}}" data-id="{{id}}">

<!-- remainder of content here -->

</div>

このディレクティブ内でやりたいことは、ディレクティブに渡された元のスコープ データに基づいて、この中にさらに HTML パーシャルをロードすることです。これを機能させることはできませんが、次のようにする必要があります。

<div class="{{cls}}" data-obj="{{obj}}" data-id="{{id}}">

<!-- remainder of content here -->

<div ng-include="partials/{{obj}}.html></div>

</div>

これを使用すると、ファイルは含まれませんが、エラーも発生しません。誰でもここで私を助けることができますか?

NB :同様の問題であるthisを読みましたが、役に立ちませんでした。

更新- Chrome 開発ツールで、URL が期待どおりに解決されていることに気付きましたが、ファイルの内容が含まれていません。ng-includeリクエストされたフラグメントをロードしてコンパイルしたドキュメントから考えたので、これが機能することを期待していました。

4

2 に答える 2

17

ディレクティブで次のように宣言することで、最終的に解決策を見つけました。

<div ng-include src="view.getView()"></div>

およびディレクティブコントローラーの次のとおりです。

$scope.view = {
    getView: function() {
        return "partials/" + $scope.obj + ".html";
    }
};

今では完璧に動作します!

于 2013-01-31T09:03:56.073 に答える
1

Shane Gadsby のコメントに対するコメント: それは違います<div ng-include src="'partials/'+{{obj}}+'.html'"></div><div ng-include src="'partials/'+obj+'.html'"></div>. あなたのコメントは、 「これがオブジェクトリテラルから文字列に強制するために必要なものである」理由を説明しているため、単一引用符で囲まれていないものはすべてスコープオブジェクトとしてコンパイラによって処理されます。

于 2014-08-29T17:29:24.947 に答える