在 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;
}
}
}
但是当它运行时,我收到一条消息:
类型错误:su.subjects.forEach 不是函数
在 Scope.SubjectController.$scope.rowClicked ( http://localhost:1810/app/controllers/SubjectController.js:12:25 )
有没有人知道可能有什么问题。我在其他地方使用了类似的代码,但每次都失败了。
最佳答案
subjects
是 Object
,而不是 Array
,因为它的 {}
符号。如果你喜欢使用 1
,你可以循环 100
和 Object.keys(subjects)
作为键。您也可以将它作为一个空数组 ( []
) 开始,然后根据需要设置 subjects[1]
和 subjects[100]
的值,但是没有速记内联方法来定义一个数组的两个独立索引而没有中间索引。
关于javascript - 为什么我收到一条消息说 forEach 不是函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31162742/