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 修改了 paranet 范围,而不是 ng-include 指令创建的范围。

是否可以包含在 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
}

然后,您可以在 company_address 模板中使用该user变量。如果你真的想在 HTML 中定义用户变量,那么你可以做一个非常hacky:

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

(假设用户不为空)

于 2013-06-13T18:07:18.737 回答