![](/img/trans.png)
[英]Cannot read property '$scope' of undefined AngularJs Error
[英]Scope variable error: Cannot read property … of undefined
在我的代码中,我有一张桌子,我想用单击的行填写表格。 桌子:
<table class="table table-striped">
<thead>
<tr>
<th>#</th>
<th>project</th>
<th>start</th>
<th>end</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="booking in myBookingsList" ng-click="bookingClicked(booking)">
<td>{{$index + 1}}</td>
<td>{{booking.usersProjects.project.name}}</td>
<td>{{booking.start | date:'yyyy-MM-dd HH:mm:ss' }}</td>
<td>{{booking.end | date:'yyyy-MM-dd HH:mm:ss' }}</td>
</tr>
</tbody>
这是ng-click的功能:
$scope.bookingClicked = function(booking){
$scope.newBooking = {};
$scope.newBooking.project = booking.usersProjects.project.name;
$scope.newBooking.id = booking.id;
$scope.newBooking.startDate = $filter('date')(booking.start, "yyyy-MM-dd");
$scope.newBooking.startTime = new Date(booking.start);
$scope.newBooking.endDate = $filter('date')(booking.end, "yyyy-MM-dd");
$scope.newBooking.endTime = new Date(booking.end);
};
问题是我得到的第二行
TypeError: Cannot read property 'project' of undefined
那么这是什么问题呢? 应用程序的另一部分从中获取数据并提交。 这工作正常,我在那里
$scope.newBooking = {};
//timepicker values must be initialized
$scope.newBooking.startTime = new Date();
$scope.newBooking.endTime = new Date();
这是一个预订对象的示例,该对象被馈送到函数:
{
"id": 50,
"self": "http://localhost:8080/timetracker-backend/timetracker/booking/50",
"start": 1434103331000,
"end": 1434110531000,
"usersProjects": {
"id": 43,
"self": "http://localhost:8080/timetracker-backend/timetracker/usersprojects/43",
"user": {
"id": 1,
"self": "http://localhost:8080/timetracker-backend/timetracker/user/1",
"name": "timetrackerAdmin",
"role": "ADMIN"
},
"project": {
"id": 42,
"self": "http://localhost:8080/timetracker-backend/timetracker/project/42",
"name": "project four",
"description": "description p4"
}
}
}
这看起来和我相似吗?
在$ scope.newBooking = {};中
没有对象名称项目,因此显示控制台错误,您可以在答案中创建一个空对象,如下所示
$scope.newBooking.project = {};
它的意思是
$scope.newBooking= {
project : {}
}
您按上述代码行工作,现在$ scope.newBooking具有或知道上述项目对象 ,因此工作正常
偶然我找到了解决方案。 如果我添加$scope.newBooking.project = {};
,则可以正常工作$scope.newBooking.project = {};
所以现在的功能是
$scope.bookingClicked = function(booking){
$scope.newBooking = {};
$scope.newBooking.project = {};
$scope.newBooking.project = booking.usersProjects.project.name;
$scope.newBooking.id = booking.id;
$scope.newBooking.startDate = $filter('date')(booking.start, "yyyy-MM-dd");
$scope.newBooking.startTime = new Date(booking.start);
$scope.newBooking.endDate = $filter('date')(booking.end, "yyyy-MM-dd");
$scope.newBooking.endTime = new Date(booking.end);
};
但是谁能告诉我为什么这仅适用于这条额外的线,谁会被接受。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.