我正在尝试使用angularjs函数绑定css类。它工作正常但它总是在浏览器控制台上打印这么多错误。你能帮我解决这个问题吗?我在下面附上了我的代码和截图。
<tr ng-repeat-start="inventory in inventoryDetails.HotelFareInventoryAllotmentDetails">
<td rowspan="2">{{inventory.HotelRoomCategoryName}}</td>
<td>Inventory</td>
<td ng-class="getClassName(1)">{{inventory.D1.Inventory}}</td>
<td ng-class="getClassName(2)">{{inventory.D2.Inventory}}</td>
<td ng-class="getClassName(3)">{{inventory.D3.Inventory}}</td>
{{inventory.D31.Inventory}}</td>
</tr>
<tr ng-repeat-end>
<td>CutOff</td>
<td ng-class="{{getClassName(1}})">{{inventory.D1.Cutoff}}</td>
<td ng-class="getClassName(2)">{{inventory.D2.Cutoff}}</td>
<td ng-class="getClassName(3)">{{inventory.D3.Cutoff}}</td>
</tr>
$scopeChild.getClassName = function (dayID) {
var dayIndex = parseInt(dayID) - 1;
if ($scopeChild.Days[dayIndex].IsWeekend) {
return 'weekend';
}
else {
return '';
}
}
答案 0 :(得分:0)
快速而肮脏的解决方案:
if ($scopeChild.Days && $scopeChild.Days[dayIndex] && $scopeChild.Days[dayIndex].IsWeekend){}
如果您的数据是异步加载的,则可能需要此功能。
如果您有兴趣推动更多调查,我需要查看您的整个控制器定义。
答案 1 :(得分:0)
从错误中我可以看到$scopeChild
存在并且有一个名为Days
的成员。但是,$scopeChild.Days[dayIndex]
是undefined
。因此,IsWeekend
显然不是undefined
对象的存在属性。结果,您收到错误。有两种情况:
$scopeChild.Days[dayIndex]
存在,方法是修复代码逻辑function
如果你想编写一个库,那么你需要一个防止白痴的解决方案,但如果问题在于你的算法,那么你需要重新考虑它。例如,如果查看dayID
,他/她应该意识到dayID
的值应该在0..6或1..7之间。在你的情况下星期一的ID是多少?您确定参数dayID
始终是数字吗?没有尾随的白色字符?这个号码是否存在于Days
中?等等我打赌你的问题是算法存在缺陷,我建议你应该调试。例如:
$scopeChild.getClassName = function (dayID) {
var dayIndex = parseInt(dayID) - 1;
if (!$scopeChild.Days[dayIndex]) {
dayIndex = "Busted..."; //put a breakpoint here and see what happens
return;
}
if ($scopeChild.Days[dayIndex].IsWeekend) {
return 'weekend';
}
else {
return '';
}
}
另外,正如vkrishna已经指出的那样,你有一个语法错误,就是你关闭了一个未打开的paranthesis。最后,建议将错误粘贴到问题中,而不是将其作为图像附加。