我知道一些javascript函数声明。像exression函数一样,匿名函数,但我不明白这两个函数的语法是什么?谁能告诉我这两个功能的名称是什么?我的意思是"操纵数据:功能(输入)"和" getDataById:function(id)"。
为什么return语句可以使用这种语法返回两个函数?为什么不一次返回一个函数而不是两个函数?如果你能给我一些参考文件会很棒吗?感谢。
app.service('MyService', function ($http, $q, $angularCacheFactory) {
var _dataCache = $angularCacheFactory('dataCache', {
maxAge: 3600000 // items expire after an hour
});
/**
* @class MyService
*/
return {
manipulateData: function (input) {
var output;
// do something with the data
return output;
},
getDataById: function (id) {
var deferred = $q.defer();
if (_dataCache.get(id)) {
deferred.resolve(_dataCache.get(id));
} else {
// Get the data from the server and populate cache
}
return deferred.promise;
}
};
});
答案 0 :(得分:0)
这些函数只是一个恰好是对象中值的匿名函数。考虑一下:
var object = {
add: function(x, y) {
return x + y;
}
};
object.add(1, 2); // = 3
这与:
相同function addFunction(x, y) {
return x + y;
}
var object = {
add: addFunction
};
object.add(1, 2); // = 3
这些函数没有什么特别之处,因为它们只是对象的常规属性。
答案 1 :(得分:0)
在这种情况下,你不会返回一个函数,而是一个Object。
在angularjs中定义service
时,必须在回调中提供其实现(app.service
的第二个参数)
此回调必须返回您希望提供给应用程序其他部分的方法。
然后在控制器或其他服务中,您将能够写下:
app.controller("MyCtrl", ["MyService", function(MyService) {
MyService.getDataById('an id');
}]);
答案 2 :(得分:0)
Angular Service返回绑定到app命名空间的服务实例,return
语句中的那些函数是可以使用的公共方法。基本上是一个包含两个方法manipulateData
和getDataById
。
它与此相似
function company() {
let product; // This is private
// Public Methods
return {
setLatestProduct: function(value) {
product = value;
console.log(product, ' set');
},
getLatestProduct: function() {
return product;
}
}
}
const apple = company();
console.log(apple); // { setLatestProduct: function, getLatestProduct: function }