当前位置 : 主页 > 网页制作 > html >

html – 如何在AngularJS中为ngInclude指令指定模型?

来源:互联网 收集:自由互联 发布时间:2021-06-12
我想在3个地方使用相同的 HTML模板,每次只使用不同的模型. 我知道我可以从模板中访问变量,但名称会有所不同. 有没有办法将模型传递给ngInclude? 这就是我想要实现的,当然属性add-var
我想在3个地方使用相同的 HTML模板,每次只使用不同的模型.
我知道我可以从模板中访问变量,但名称会有所不同.

有没有办法将模型传递给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>
网友评论