1

テンプレートをいくつかの場所で使用しようとしていますcompany_address.htmlが、ルートによっては、別の変数で構築されています。

テンプレート:

Username: {{ user.company.name }}
Company: {{ user.company.company_name }}

データは$httpサービスからロードされます。

オファー ページでは、ユーザーは によって定義されますがoffer.user、注文ページでは によって定義されorder.userます。そのために同じテンプレートを使用したいと思います。

$rootScopeまた、アプリケーションで認証が必要なため、ユーザーが定義されていることにも言及したいと思います。

私は試してみました:

<any ng-include="'path/to/company_address.html'" onload="user=offer.user">オファーページなどに似ていますonload="user=order.user"が、これは機能しません。onload は、ng-include ディレクティブによって作成されたスコープではなく、paranet スコープを変更することを知っています。

ng-include で定義されたオブジェクトに同じ html スニペットを含めることは可能ですか?

4

2 に答える 2

1

@james-sharp によって提案された ng-hide 属性ハックを使用する代わりに、ng-init ディレクティブを使用します。これにより、スコープで変数を初期化できます。例:

<div ng-init="test1 = (data | orderBy:'name')"></div>
于 2014-02-03T18:07:31.747 に答える
0

ng-include によって取り込まれたコードは、引き続き親スコープから継承する必要があるため、次のようなことができるはずです。

HTML

<any ng-controller="FooCtrl">
    <!-- Whatever html you want here -->
    <any ng-include="path/to/company_address.html"></any>
</any>

コントローラ

FooCtrl = function($scope){
    $scope.user = $scope.offer.user // or $scope.order.user
}

userその後、company_address テンプレートで変数を使用できます。HTMLでユーザー変数を本当に定義したい場合は、かなりハックすることができます:

<any ng-include="'path/to/company_address.html'" ng-hide="user = offer.user">

(ユーザーが null でないと仮定)

于 2013-06-13T18:07:18.737 に答える