angular.module('events.services', [])
.factory('EventService', function($http, $cordovaSQLite) {
return {
test: function() {
return 'It Works!';
}
}
}
})
控制器
.controller('NearCtrl', function($scope, $http, $cordovaSQLite, EventService) {
var test = EventService.test;
console.log(test); // I expect 'It works' to be here, but returns 'function test();'
})
为什么不返回'It Works!' ?非常感谢。
答案 0 :(得分:1)
根据评论,并按照JS语言
在以下link
中调用函数 定义函数不会执行它。定义函数只是命名函数并指定调用函数时要执行的操作。调用该函数实际上使用指示的参数执行指定的操作。例如,如果定义函数square,则可以按如下方式调用它:
square(5);
如您所见,该功能需要执行()。
function square(num){
return num
}
console.log(square);
=> function square(num)
console.log(square( 5 ));
=> 5
当您使用工厂时,
console.log(EventService);
=> { test: function() { return 'It Works!'; }
在您的方案中,您的工厂已返回一个对象,该对象具有指向匿名函数的 test 属性。
只需调用 EventService.test 就会像调用 console.log(square); 时一样返回匿名函数。要使用返回的函数值,您还必须像这样调用它
EventService.test();
继续按照您认为合适的方式发布问题,但也要记住首先对代码进行问题排查,如果您仍然需要提问,请提供解决问题所需的所有步骤:)