【发布时间】:2016-04-28 20:28:55
【问题描述】:
我有一个用户信息视图,其中有一个包含一些用户数据的表,这些数据是从后端异步获取的。我不想打印这个对象的每个字段。
什么是更好的做法,直接在模板中选择数据或在控制器中生成一个对象,然后在模板中使用 ngRepeat?
如果我想做更复杂的事情,比如将用户组打印为 html 列表,那么哪个是更好的选择?
示例 1:在模板中选取数据
// controller.js
backendApi.userInfo($stateParams.user)
.then(function (user){
vm.user = user;
});
<!-- view.html -->
<table class="table table-condensed">
<tr>
<th class="col-xs-2 col-md-1">ID</th>
<td class="col-xs-10 col-md-11">{{vm.user.id}}</td>
</tr>
<tr>
<th class="col-xs-2 col-md-1">Name</th>
<td class="col-xs-10 col-md-11">{{vm.user.name}} {{vm.user.surname}}</td>
</tr>
<tr>
<th class="col-xs-2 col-md-1">Status</th>
<td class="col-xs-10 col-md-11">{{vm.userEnabledString(vm.user)}}</td>
</tr>
<tr>
<th class="col-xs-2 col-md-1">Groups</th>
<td class="col-xs-10 col-md-11">{{vm.user.groups.join(", ")}}</td>
</tr>
</table>
示例 2:在控制器中选取数据并在视图中使用 ngRepeat。
// controller.js
backendApi.userInfo($stateParams.user)
.then(function (user){
// user has more fields that I don't need to print.
vm.user = {
"ID": user.id,
"Name": user.name + " " + user.surname,
"Status" : userEnabledString(user),
"Groups": user.groups.join(", ")
}
});
<!-- view.html -->
<table class="table table-condensed">
<tr ng-repeat="(key, value) in vm.user">
<th class="col-xs-2 col-md-1">{{key}}</th>
<td class="col-xs-10 col-md-11">{{value}}</td>
</tr>
</table>
函数userEnabledString 打印一个布尔值的文本表示。
【问题讨论】:
标签: angularjs model-view-controller mvvm angularjs-ng-repeat angularjs-controller