角度属性始终未定义

时间:2016-02-08 12:39:28

标签: javascript jquery css angularjs

我正在尝试使用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 '';
                                }



                        }

enter image description here

2 个答案:

答案 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。最后,建议将错误粘贴到问题中,而不是将其作为图像附加。