代码在Plunkr中有效,但在我的编辑器

时间:2017-10-15 10:43:20

标签: angularjs

我制作了一个自定义过滤器来过滤一列上有多个条件的列表。

我做了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上运行不正常? 有人能告诉我吗?

1 个答案:

答案 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

你应该安全。