gpt4 book ai didi

javascript - 类型错误 : Cannot read property 'slice' of undefined

转载 作者:行者123 更新时间:2023-11-28 01:06:26 33 4
gpt4 key购买 nike

我使用此脚本进行页面分页,如本教程 http://fdietz.github.io/recipes-with-angular-js/common-user-interface-patterns/paginating-through-client-side-data.html 所示

app.filter('offset', function() {
return function(input, start) {
start = parseInt(start, 10);
return input.slice(start);
};
});

一切都很顺利,除了我收到一个错误

TypeError: Cannot read property 'slice' of undefined
at k.<anonymous> (http://www.foo.com/43267ztX/default/:18:17)
at e (http://www.foo.com/43267ztX/default/js/angular.min.js:171:180)
at db.| (http://www.foo.com/43267ztX/default/js/angular.min.js:160:65)
at F.constant (http://www.foo.com/43267ztX/default/js/angular.min.js:170:82)
at db.| (http://www.foo.com/43267ztX/default/js/angular.min.js:160:70)
at F.constant (http://www.foo.com/43267ztX/default/js/angular.min.js:170:82)
at Object.$watch.p (http://www.foo.com/43267ztX/default/js/angular.min.js:107:159)
at k.$digest (http://www.foo.com/43267ztX/default/js/angular.min.js:109:78)
at k.$apply (http://www.foo.com/43267ztX/default/js/angular.min.js:112:173)
at h (http://www.foo.com/43267ztX/default/js/angular.min.js:72:300) </pre>

最佳答案

尝试:

app.filter('offset', function(start) {
return function(input) {
start = parseInt(start, 10);
return input.slice(start);
};
});

这是什么意思?

  1. 每个过滤器都必须接受输入并返回输出
  2. 每个过滤器都必须根据条件构建。这意味着,在示例中:给定一个特定的开始,给我一个接受输入并生成输出切片的函数(开始,10)
  3. 这很像装饰器模式。
  4. 不相信我?阅读official doc了解过滤器如何成为高阶函数(返回函数的函数 - 该函数成为条件工厂,并且生成的函数仅用于定义函数的目的)。

你的错误是什么?

  1. 在包装函数中(比方说),您必须仅提供用于定义实际过滤器的函数的参数。您将将此过滤器用作{{ myArray|offset:3 }},并且仅接收一个参数:(start),在本例中为 3。<
  2. 封装的函数将完全采用一个参数(名称并不重要)。

为了进一步说明这一点:(编辑...)

让我们创建一个新的过滤器,其中一个参数的上限比您的过滤器多:

app.filter('limit', function(start, count) {
start = parseInt(start);
count = parseInt(count);
return function(input) {
return input.slice(start, start + count);
}
});

每个过滤器都是一个工厂(实际上:它是一个工厂)。该滤波器采用两个参数并产生实际的滤波器。实际的过滤器是一个接受参数并返回过滤后的值的函数。内部标准由我传递给包装函数的参数定义。

所以当你像这样使用它时:

{{ myArray | limit:5:5 }}

你说的是:

  1. 采用参数 (5, 5)。
  2. 创建一个函数,该函数接受输入并在 (5, 10) 上对其进行切片,然后返回它。
  3. 将返回的函数应用于 myArray

关于javascript - 类型错误 : Cannot read property 'slice' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25023846/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com