gpt4 book ai didi

javascript - 为什么angular在回调函数里面返回一个函数?

转载 作者:行者123 更新时间:2023-11-29 22:10:11 25 4
gpt4 key购买 nike

要定义 Angular 的过滤器,您应该这样写:

angular.module('app', [])
.filter('mix', function () {
// Why do we return a function here?
return function (input) {
var output;
// doing some business here
return output;
};
});

为什么 Angular 在传递给 filter 函数的回调函数中返回一个函数?为什么不把它用作过滤器定义的占位符和模板呢?这种语法对开发人员一点都不友好。 Angular 有什么限制才能使用这个函数嵌套?是一种模式吗?

我猜这看起来合乎逻辑且正常(基于大量使用 jQuery 和其他库)是这样的语法:

angular.module('app', [])
.filter('mix', function (input) {
var output;
// doing some business here
return output;
});

最佳答案

这一切都与 Angular 进行依赖注入(inject)的方式有关。

您希望能够将服务注入(inject)过滤器但返回一个不使用依赖注入(inject)的函数。

例如,假设您的过滤器使用 $location 服务:

angular.module('app', [])
.filter('mix', function ($location) {
// Location got injected.

// create some private functions here
function process(input) {
// do something with the input and $location
}

return function (input) {
return process(input);
};
});

从这个例子也可以看出,这样做可以让你创建只对这个过滤器可用的“私有(private)”函数。

关于javascript - 为什么angular在回调函数里面返回一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18518097/

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