我制作了一个自定义过滤器来过滤一列上有多个条件的列表。
我做了this plunk
var app = angular.module('main', ['angular.filter'])
.filter('filterIns', function() {
var obj = {};
return function(list, ins) {
var out = [];
for (var i = 0; i < list.length; i++) {
if (ins.indexOf(list[i].instrument) > -1) {
obj = list[i];
out.push(obj);
}
}
if (ins.length === 0) {
out = list;
}
return out;
};
})
[...]
一切都按预期工作。但是,当我将此代码复制到我的localhost环境时,我得到了这个令人讨厌的(一般?)错误:'undefined不是一个对象(评估'list.length')'引用第11行。
为什么它在Plunkr中完美运行但在localhost上运行不正常? 有人能告诉我吗?
答案 0 :(得分:0)
您的列表是否已加载异步或其他内容?显然,当过滤器第一次运行时,它是未定义的。所以只需在第11行之前放置一个条件,如:
if (!list) { return []; }
// or
if (!list) { return undefined; }
// or even better
if (!list) { return list; } // this keeps things like 0, undefined or null intact
你应该安全。