You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS报错:无法在数字'1'上创建'subjects'属性及选课学科选择问题

解决AngularJS中"Cannot create property 'subjects' on number '1'"的问题

嘿,这个问题我太熟悉了!咱们直接说根源:你把课程选择的ng-model绑定成了数字类型的课程ID,却试图给这个数字添加subjects属性——数字类型根本不支持新增属性,这就是报错的原因!

问题出在哪?

看你课程选择的下拉框代码:

<select ng-model="course" class="form-control" ng-options="course.IdCourse as course.Name for course in courses track by course.IdCourse">
</select>

这里的course.IdCourse as course.Name意味着,当你选择某门课程时,$scope.course会被赋值为course.IdCourse(也就是一个数字,比如报错里的1),而不是完整的课程对象。

当你没选课程时,course是undefined,这时候course.subjects不会触发报错;但一旦选中课程,course变成了数字,再想给它绑定多选的学科(也就是给数字加subjects属性),浏览器自然会抛出"Cannot create property 'subjects' on number"的错误。

解决方案

把课程选择的ng-options改成绑定整个课程对象,而不是只绑定ID。这样$scope.course就是一个对象,就能正常添加subjects属性来存储多选的学科了。

修改后的课程选择下拉框代码:

<div class="form-group">
  <label>Select Course</label>
  <select ng-model="course" class="form-control" ng-options="course as course.Name for course in courses track by course.IdCourse">
  </select>
</div>

核心变化是把course.IdCourse as改成了course as,这样ng-model绑定的是完整的课程对象,而不是单个ID数字。

额外说明

  • 修改后,当你需要获取课程ID用于提交表单等操作时,直接用course.IdCourse就可以,完全不影响业务逻辑。
  • 学科选择的代码无需改动,现在course.subjects会正常绑定多选的学科ID数组,和angular-chosen插件的兼容性也没问题。

内容的提问来源于stack exchange,提问作者Junaid Farooq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:39:33