我在 AngularJS 中遇到了 ng-class 的问题——它没有正确更新。
看法:
<div class="cal-day" ng-repeat="day in schedule">
...
<div class="entry" ng-click="entryDetails(entry)" ng-repeat="entry in day.blockGrid"
ng-class="{'selected': isSelected(entry), 'bg-{{entry.color}}': entry, 'bg-empty': !entry}">
{{isSelected(entry)}}
...
</div>
</div>
JS:
$scope.entryDetails = function(entry) {
$scope.entryForDetails = entry;
};
$scope.isSelected = function(entry) {
return $scope.entryForDetails === entry;
};
选择的CSS 类实现得很好 - 当我在ng-class中将isSelected(entry)替换为true时,该类得到正确应用。
与isSelected()函数相同 - 它根据项目是否被选中正确打印true或false 。即使两个元素都有效,但它们以某种方式拒绝一起工作,并且当isSelected(entry)返回true时
div 类不会更新为selected。
编辑:
模型存储在天
{
"date": "6.6.2013",
"blockGrid": [
null,
null,
null,
null,
null,
null,
{
"group": "ABCD",
"subjectName": "AB CD",
"subjectShorthand": "PW",
"type": "c",
"number": 4,
"profName": "ABAB",
"date": "2013-06-05T22:00:00.000Z",
"venue": "329 S",
"timetableBlock": 7,
"color": 16,
"_id": "51c3a442eb2e46a7220000e2"
}
]
}
如您所见,它是一个由 7 个元素组成的数组,这些元素要么为空,要么包含一个条目对象。
我忘了提到我的观点的发布部分在另一个 ng-repeat 中。上面的查看代码片段现在已扩展以反映这一点。