无法从ng-repeat中的列表中获取对象

时间:2016-01-10 16:25:49

标签: angularjs

我试图在列表中显示所有用户,但这对我来说似乎不起作用。

目前,我有以下内容:

<div ng-init="messageCtrl.getPatients()">
                        <tr ng-repeat="patient in messageCtrl.patientList">
                            <td>{{patient.username}}</td>
                            <td>{{patient.role}}</td>
                            {{messageCtrl.patientList[0].username}}
                        </tr>
                    </div>

在控制器中:

vm.getPatients = function(){
        userFactory.getPatientList($localStorage.user._id)
            .then(
                function success(response){
                    vm.patients= response.data;
                    vm.patientList = vm.patients.userList;
                },
                function(error, status, header, config){
                    vm.errorMsg = error;
                    vm.status = status;
                }
            )
    };

我认为问题出现在视图中,因为当我执行{{messageCtrl.patientList [0] .username}}时会显示用户名,但当我尝试在ng中执行此操作时,它不会显示-repeat,我确定数据在patientList中。

提前致谢。

1 个答案:

答案 0 :(得分:0)

在Ctrl

中设置范围

在你的控制器内你应该有

$scope.theArrayYouWantToRepeat = //whatevers in the array

然后在html中你应该删除这一行

<div ng-init="messageCtrl.getPatients()">

您的控制器应使用ng-controller

在您的html中声明

范围

将变量或函数绑定到范围时,将其设置为双向数据绑定。您应该在视图中使用$ scope设置所需的任何内容。

控制器应该在数据显示之前将业务逻辑添加到数据中。

数据流

对于角度应用中的数据流,它可能看起来像这样

  1. 数据库(可能是mongodb或firebase)
  2. API(这会检索用户列表等内容)。
  3. 对api
  4. 进行$ http调用的工厂或服务
  5. 您调用工厂并绑定到$ scope
  6. 的控制器
  7. 查看,使用过滤器或循环等显示$ scope中的数据。
  8. 结论

    我希望这能以清晰的方式显示这个过程。