在我定义的 typescript 中:
class SubjectService implements ISubjectService {
subject: any;
subjectId: number = 0;
subjects = {
"1": { "id": 1, "name": "Java" },
"100": { "id": 100, "name": "Test" }
};
static $inject = [
"$http",
"appConstant",
];
constructor(
public $http: ng.IHttpService,
public ac: IAppConstant
) {
}
}
然后我在我的构造函数中有这段代码:
class SubjectController {
static $inject = [
"$scope",
"subjectService"
];
constructor(
public $scope,
public su: ISubjectService
) {
$scope.su = su;
$scope.rowClicked = (subject, $index) => {
var self = this;
if (subject.current && subject.current == true) {
return;
}
su.subjects.forEach(function (subject) {
subject.current = false;
});
su.subject = subject;
su.subject.current = true;
}
}
}
但是当它运行时我收到一条消息说:
TypeError: su.subjects.forEach 不是函数 在 Scope.SubjectController.$scope.rowClicked ( http://localhost:1810/app/controllers/SubjectController.js:12:25 )
有没有人知道可能出了什么问题。我在其他地方使用了类似的代码,但在这里每次都失败。
最佳答案
subjects
是一个Object
,而不是一个Array
,因为它的{}
符号。如果您喜欢使用 Object.keys(subjects)
,可以将 1
和 100
作为键进行循环。您也可以将其作为一个空数组 ([]
) 开始,然后设置 subjects[1]
和 subjects[100]
的值如果您愿意,但没有一种简写的内联方式可以只定义一个数组的两个单独的索引,而没有中间的索引。
关于javascript - 为什么我收到一条消息说 forEach 不是函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31162742/