Tôi gặp vấn đề với ng-class trong AngularJS - nó không cập nhật đúng.ng-class không cập nhật khi cần sau khi hàm được gọi với ng-click được thực thi
Xem:
<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 lớp chọn được thực hiện tốt - khi tôi thay isSelected (entry) với đúng trong ng-class, lớp được áp dụng đúng cách.
Cùng một điều với isSelected() chức năng - nó một cách chính xác in đúng hoặc sai tuỳ thuộc vào việc các mục được chọn.
Mặc dù cả hai yếu tố làm việc, họ bằng cách nào đó từ chối hợp tác với nhau, và lớp div không được cập nhật để chọn khi isSelected (entry) lợi nhuận đúng.
Edit:
mẫu lưu trữ trong ngày
{
"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"
}
]
}
Như bạn thấy, nó là một mảng của 7 yếu tố đó là một trong hai null hoặc chứa một nhập đối tượng.
Tôi quên đề cập rằng phần đã đăng của chế độ xem của tôi nằm trong một ng-lặp lại khác. Xem đoạn mã ở trên hiện được mở rộng để phản ánh điều đó.
Bạn có thể đăng mô hình được lưu trữ trong 'day.blockGrid' không? – callmekatootie
chắc chắn, tôi đã cập nhật bài viết của tôi – fau
Tôi nghĩ ng-class được đánh giá là một boolean .. nhưng ở đây nó đang đánh giá 'null' và'! Null'. Điều này có được phép không? – rGil