2

有一个从 api 加载的用户列表

<div ng:controller="UserController">
    <li ng-repeat="user in users">
         <a ng:click="select(user)">
            {{user.first_name}} {{user.last_name}}
         </a>
    </li>
</div>

单击用户时,我想打开一个额外的视图,显示用户的一些详细信息。想象一下这样的景色

在此处输入图像描述

蓝色的小区域是选定的用户,蓝色的大区域是显示详细用户信息的容器。

function UserController($scope){
    $scope.select = function(user){
        console.log(user);
    }
}

因此,当单击用户时,我可以记录用户对象。它一直有效。但我绝对不知道如何打开装满用户数据的额外容器。

有没有办法简单地从文件系统加载模板,传递对象并将整个内容附加到当前视图?我将如何使用 angular.js 做到这一点?

4

1 回答 1

6

无需加载模板或任何东西。只需将数据放在范围内,并在大蓝色部分中使用引用数据的表达式。Angular will handle changing the displayed content when the selection is changed. 您可以使用 ng-show 隐藏相关部分,直到数据被选中。

这是一个小提琴示例

function UserController($scope){
    $scope.users = [{name:'me',email:'mine'}, {name:'you',email:'yours'}];
    $scope.selectedUser = null;
    $scope.select = function(user){
        $scope.selectedUser = user;
    }
}

<div ng-controller="UserController">
<button class="btn" ng-click="select(users[0])">User 1</button>
<button class="btn" ng-click="select(users[1])">User 2</button>
<hr>
<div ng-show="selectedUser != null">
    <div>{{selectedUser.name}}</div> 
    <div>{{selectedUser.email}}</div> 
</div>

您可以使用类似的 ng-class 或 ng-style 属性突出显示相应的蓝色小框(例如 ng-class="{active: selectedUser == user}")。请参阅有条件地申请课程的最佳方式是什么?

于 2013-04-13T00:00:44.023 回答