gpt4 book ai didi

javascript - 如何使用 angularjs 呈现需要不同模板(具有不同变量)的混合 json 结果

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:23:25 25 4
gpt4 key购买 nike

我想知道当我的响应包含许多不同类型的对象并且看起来像这样时,最佳做法是什么:

[
{"nodeClass":"Entity", "text":"foo","entityfield":"booz"},
{"nodeClass":"User","username":"bar","userfield":"baz"}
]

我为所有这些设置了不同的模板:

对于实体:

<div class="{{nodeClass}} capsule">{{entity.text}}:{{entity.entityfield}}</div>

对于用户:

<div class="{{nodeClass}} capsule">{{user.username}}:{{user.userfield}}</div>

您将如何构建代码以及使用哪些 angularjs 元素(ng-repeat 等)根据“nodeClass”的值(重新)使用正确的模板。请记住,我不想制作新的条件模板,除非它是唯一的解决方案。

编辑:我发现了这些方法:http://onehungrymind.com/angularjs-dynamic-templates/if else statement in AngularJS templatesDynamically displaying template in ng-repeat directive in AngularJS?但它们与我的要求完全不同。特别是最后一个是最接近我想要的,但我的模板通常有不同的变量名..

谢谢

最佳答案

一种方法是使用动态生成的 ng-include url

HTML

  <div ng-repeat="item in data">
<div ng-include="getContentUrl(item.nodeClass)"></div>
</div>

模板

  <script type="text/ng-template" id="partials/Entity.html">
<h3>Entity Template , text= {{item.text}}</h3>
</script>
<script type="text/ng-template" id="partials/User.html">
<h3>User Template , username ={{item.username}}</h3>
</script>

JS

app.controller('MainCtrl', function($scope) {
$scope.data=[{"nodeClass":"Entity", "text":"foo"},{"nodeClass":"User","username":"bar"}];
$scope.getContentUrl = function(nodeClass){
return 'partials/'+nodeClass +'.html';
}
});

DEMO

关于javascript - 如何使用 angularjs 呈现需要不同模板(具有不同变量)的混合 json 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30091050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com