fau*_*fau 6 angularjs angularjs-ng-repeat
我在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>
Run Code Online (Sandbox Code Playgroud)
JS:
$scope.entryDetails = function(entry) {
$scope.entryForDetails = entry;
};
$scope.isSelected = function(entry) {
return $scope.entryForDetails === entry;
};
Run Code Online (Sandbox Code Playgroud)
CSS类选择是罚款实现-当我更换isSelected(入口)与真正的NG-类,该类得到正确应用.
与isSelected()函数相同 - 它根据是否选中该项正确打印true或false.
即使两个元素都有效,它们也会以某种方式拒绝协同工作,并且当isSelected(entry)返回true时,div类不会更新为选中状态.
编辑:
模型存储在白天
{
"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"
}
]
}
Run Code Online (Sandbox Code Playgroud)
如您所见,它是一个包含7个元素的数组,这些元素为null或包含一个入口对象.
我忘了提到我的观点的张贴部分在另一个ng-repeat中.现在查看上面的查看代码段以反映这一点.
正如您所设置的那样,NG 类想要计算一个布尔表达式,您在对象中的第一个表达式已经完成了该操作。但是,接下来的两个表达式尝试计算该对象,而不是返回 true/falseentry的结果。isSelected(entry)
所以更正一下:
ng-class="{'selected': isSelected(entry), 'bg':isSelected(entry), 'bg-empty':!isSelected(entry)}"
Run Code Online (Sandbox Code Playgroud)
也就是说,除非你正在尝试其他事情。另请注意,我删除了bg-{{entry.color}}. 我不知道如何评估 ng 类中的范围属性,或者是否可能。
这是工作中的 plunker 演示。这可能不是您想要的,但它至少可以帮助您排除故障。
| 归档时间: |
|
| 查看次数: |
10307 次 |
| 最近记录: |