AngularJS:代码在迭代对象时不起作用[复制]

参见英文答案 > ‘this’ vs $scope in AngularJS controllers7个
我正在尝试从模板中的控制器empctrl填充员工对象列表.

这是控制器:

app.controller('employeeController',function ($scope,employeeService) {

    this.employees = {};

    this.populateTable = function (data) {

        this.employees = data;
    };

    var error = function (err) {
        console.log("Error: " + err);
    };

    // Call Service to List all Employees
    console.log("Service called to populate table.");
    employeeService.output().then(this.populateTable,error);
    this.populateTable();

});

但是,我写的这段代码不起作用:

<div ng-repeat="employee in empctrl.employees.allEmployees" class="table_row">
    <div class="table_column" style="width:2%">{{ $index + 1 }}</div>
    <div class="table_column" style="width:8%">{{ employee.employeeName}}</div>
    <!-- 7 more columns -->
</div>

UI中没有显示任何内容.
相反,如果我在控制器中编写$scope.employees,它可以工作:

<div ng-repeat="employee in employees.allEmployees" class="table_row">

因为我知道做范围是多么诱人.< everything>在控制器中,我试图尽可能避免使用$scope.

如果有人能够证明alias.abc和$scope.abc(别名是控制器的别名)之间正确使用$scope和差异,我将非常感激.

编辑:完全相同的问题是:‘this’ vs $scope in AngularJS controllers

感谢这个链接,PankajParkar.

你在populateTable函数中访问的问题是你在控制器函数中没有的问题.

最好将此变量保留在某个变量中,这样通过使用它可以确保引用正确的对象.

调节器

app.controller('employeeController',employeeService) {
    var vm = this;
    vm.employees = {};

    vm.populateTable = function (data) {
        vm.employees = data;
    };

    var error = function (err) {
        console.log("Error: " + err);
    };

    // Call Service to List all Employees
    console.log("Service called to populate table.");
    employeeService.output().then(vm.populateTable,error);
    vm.populateTable();
});

有关详细信息,我强烈建议您在this article上阅读

如果您对此范围感到困惑,请阅读this answer

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...