javascript - Angular 属性始终未定义

标签 javascript jquery css angularjs

我正在尝试使用 angularjs 函数绑定(bind) 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

最佳答案

从错误中我可以看到 $scopeChild 存在并且有一个名为 Days 的成员。但是,$scopeChild.Days[dayIndex]未定义。因此,IsWeekend 显然不是 undefined 对象的现有属性。结果,您收到错误。有两种情况:

  • 您可能希望通过修复代码逻辑来确保每次调用此函数时 $scopeChild.Days[dayIndex] 都存在
  • 您可能想确保错误不会发生,即使以错误的方式调用函数

如果你想编写一个库,那么你需要一个防白痴的解决方案,但如果问题出在你的算法上,那么你需要重新考虑它。例如,如果查看 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 已经指出的那样,您有一个语法错误,也就是说,您关闭了一个未打开的括号。最后,建议将错误粘贴到问题中,而不是将其作为图像附加。

关于javascript - Angular 属性始终未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35269914/

相关文章:

javascript - 给定 url,如何加载图像,然后将其转换为 Javascript 中的 tf.tensor 数据?

javascript - nodeJS - Express 应提供引用的 main.js

javascript - Grunt 连接目录文件的最有效方法?

javascript - 当我从输入字段中移除光标时的事​​件

javascript - PHP - 为 Ajax Post 的表单数据附加新值

javascript - 在 element.style 处附加宽度或高度,具体取决于数组值,纯 JS

jquery - Microsoft JSON 对象序列化与 "normal"序列化不同吗?

javascript - Internet Explorer 不支持 jquery

css - 如何使用 Grid 使组件准确居中?

html - CSS扩展相邻选择器