我知道这似乎是重复但不是。无论我做什么,都没有用。
我的角度模块中有一个列表:
this.checkedInterviews = []
然后是一个函数:
var interviewModel = {
interviewId: self.pendingInterviews[i].id,
status: self.pendingInterviews[i].status,
location: self.pendingInterviews[i].location,
start: self.pendingInterviews[i].start,
hideCheck: null
};
this.checkedInterviews.push(JSON.stringify(interviewModel));
我得到Cannot read property 'push' of undefined
。
不知道问题是什么?
答案 0 :(得分:3)
var checkedIntervews = []
var interviewModel = {};
checkedIntervews.push(JSON.stringify(interviewModel));
console.log(checkedIntervews);
(function arrayPush() {
this.checkedIntervews = [];
var interviewModel = {};
this.checkedIntervews.push(JSON.stringify(interviewModel));
console.log(this.checkedIntervews);
})();
你想尝试:
var checkedIntervews = []
var interviewModel = {};
checkedInterviews.push(JSON.stringify(interviewModel));
$scope.checkedInterviews = checkedInterviews; //If using AngularJS because Angular is tagged in the question
注意:如果所有这些都在同一个功能中,您应该可以使用this
。这应该也适用于全球范围。我使用IIFE的唯一原因是将范围分开
上面添加了两个案例的代码段。
如果不清楚你问题中的this
是什么btw。
答案 1 :(得分:2)
看来,第二个功能是使用不同的this
。
在Angular Module中,您可以将this
分配给某个变量,然后尝试从第二个函数访问它。
E.g:
var vm = this;
vm.checkedInterviews = [];
现在你应该使用以下功能访问它:
vm.checkedInterviews.push();
答案 2 :(得分:0)
如果他们放入不同的功能,那么第二个功能中的this
是另一个对象。
答案 3 :(得分:0)
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.checkedInterviews = [];
$scope.pendingInterviews = [{'id':1,'status':'pending','location':'abc','start':'start'}];
for(i= 0; i < $scope.pendingInterviews.length; i++){
var interviewModel = {
interviewId: $scope.pendingInterviews[i].id,
status: $scope.pendingInterviews[i].status,
location: $scope.pendingInterviews[i].location,
start: $scope.pendingInterviews[i].start,
hideCheck: null
};
console.log(interviewModel);
$scope.checkedInterviews.push(JSON.stringify(interviewModel));
}
console.log($scope.checkedInterviews);
}