【发布时间】:2016-06-09 09:43:08
【问题描述】:
我正在尝试从模板中的控制器 empctrl 填充 employee 对象列表。
这是控制器:
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>
用户界面中没有显示任何内容。
相反,如果我在控制器中写$scope.employees,它会起作用:
<div ng-repeat="employee in employees.allEmployees" class="table_row">
因为我知道在控制器中使用$scope.<everything> 是多么诱人,所以我尽量避免使用$scope。
如果有人能证明$scope 的正确使用以及alias.abc 和$scope.abc 之间的区别(其中alias 是控制器的别名),我将不胜感激。
编辑:完全相同的问题是:'this' vs $scope in AngularJS controllers
感谢此链接,PankajParkar。
【问题讨论】:
-
需要查看更多您的代码(至少是您的控制器代码)。 Fiddle/plunker/codepen 会很好。
-
@LJ.Wizard 您需要哪部分代码?我会添加它。
-
您的控制器代码 -
empctrl看起来。我假设您使用的是controller as语法? -
你用过
ng-controller="employeeCtrl as empctrl"吗(类似这样的东西,假设控制器名称为employeeCtrl) -
@PankajParkar 是的,我愿意。
标签: angularjs scope angularjs-ng-repeat angularjs-controller angularjs-controlleras