我想在3个地方使用相同的 HTML模板,每次只使用不同的模型. 我知道我可以从模板中访问变量,但名称会有所不同. 有没有办法将模型传递给ngInclude? 这就是我想要实现的,当然属性add-var
我知道我可以从模板中访问变量,但名称会有所不同.
有没有办法将模型传递给ngInclude?
这就是我想要实现的,当然属性add-variable现在不起作用.然后在我包含的模板中,我将访问detailsObject及其属性.
<pane title="{{projectSummary.ProjectResults.DisplayName}}"> <h2>{{projectSummary.ProjectResults.DisplayName}}</h2> <ng-include src="'Partials/SummaryDetails.html'" init-variable="{'detailsObject': projectSummary.ProjectResults}"></ng-include> </pane> <pane title="Documents" header="true"></pane> <pane ng-repeat="document in projectSummary.DocumentResults" title="{{document.DisplayName}}"> <h2>{{document.DisplayName}}</h2> <ng-include src="'Partials/SummaryDetails.html'" add-variable="{'detailsObject': document}"></ng-include> </pane> <pane ng-repeat="header in [1]" title="Languages" header="true"></pane> <pane ng-repeat="language in projectSummary.ResultsByLanguagePairs" title="{{language.DisplayName}}"> <h2>{{document.DisplayName}}</h2> <ng-include src="'Partials/SummaryDetails.html'" add-variable="{'detailsObject': language}"></ng-include> </pane>
如果我使用ng-include采取了不好的方法,那还有什么我应该尝试的吗?
注意:这不是我原来的答案,但这是我在使用角度稍微做之后的方法.我将使用html模板创建一个指令作为标记,将动态数据传递给指令,如this fiddle所示.
此示例的步骤/说明:
>在templateUrl中定义带有标记的指令,并使用用于将数据传递到指令的属性(在此示例中为命名类型).
>使用模板中的指令数据(本例中为命名类型).
>在标记中使用该指令时,请确保将数据从控制器范围传递到指令(< address-form type =“billing”>< / address-form>(其中计费正在访问对象上)控制器范围).
>请注意,在定义指令时,名称是驼峰式的,但在标记中使用时,它是小写划线(即,它在js中命名为addressForm,在html中命名为address-form).有关这方面的更多信息,请参阅angular docs here.
这是js:
var myApp = angular.module('myApp',[]); angular.module('myApp').directive('addressForm', function() { return { restrict: 'E', templateUrl: 'partials/addressform.html', // markup for template scope: { type: '=' // allows data to be passed into directive from controller scope } }; }); angular.module('myApp').controller('MyCtrl', function($scope) { // sample objects in the controller scope that gets passed to the directive $scope.billing = { type: 'billing type', value: 'abc' }; $scope.delivery = { type: 'delivery type', value: 'def' }; });
使用标记:
<div ng-controller="MyCtrl"> <address-form type="billing"></address-form> <address-form type="delivery"></address-form> </div>
原始答案(与使用指令BTW完全不同).
注意:由于错误,我的原始答案中的小提示似乎不再起作用(但如果它仍然有用,请将其保留在此处)
您可以在see it here上对Google Group进行讨论.
看起来这个功能不支持开箱即用,但您可以使用this post中所述的Brice补丁.
以下是他jsfiddle的示例代码:
<script id="partials/addressform.html" type="text/ng-template"> partial of type {{type}}<br> </script> <div ng-controller="MyCtrl"> <ng-include src="'partials/addressform.html'" onInclude="type='billing'"></ng-include> <ng-include src="'partials/addressform.html'" onLoad="type='delivery'"></ng-include> </div>