我正在尝试使用Jhon Papa's Angular 1样式指南在Angularjs中创建工厂。问题是,当我在一个对象中封装一个函数然后返回该对象时,该函数不会被调用。
例如
不起作用
angular
.module('movieCore')
.factory('PopularMovies', factory);
factory.$inject = ['$resource'];
function factory($resource) {
var service = {
popularMovies: popularMovies
};
return service;
function popularMovies() {
var token = 'teddybear'; // TBC
return $resource('popular/:movieId', { movieId: '@id' }, {
update: {
method: 'PUT',
headers: { 'authToken': token }
},
get: {
method: 'GET',
headers: { 'authToken': token }
},
query: {
method: 'GET',
headers: { 'authToken': token }
},
save: {
method: 'POST',
headers: { 'authToken': token }
},
remove: {
method: 'DELETE',
headers: { 'authToken': token }
}
});
}
}
如果我删除了保存其功能的对象。
angular
.module('movieCore')
.factory('PopularMovies', factory);
factory.$inject = ['$resource'];
function factory($resource) {
var token = 'teddybear'; // TBC
console.log('hey there');
return $resource('popular/:movieId', { movieId: '@id' }, {
update: {
method: 'PUT',
headers: { 'authToken': token }
},
get: {
method: 'GET',
headers: { 'authToken': token }
},
query: {
method: 'GET',
headers: { 'authToken': token }
},
save: {
method: 'POST',
headers: { 'authToken': token }
},
remove: {
method: 'DELETE',
headers: { 'authToken': token }
}
});
};
答案 0 :(得分:1)
有一个区别,要访问第一个示例,您必须在第二个示例popularMovies.popularMovies();
中编写popularMovies()
。这就是为什么一个例子不是另一个例子。因为第一个示例返回一个popularMovies()
作为成员的对象。第二个示例直接返回$resource
答案 1 :(得分:-1)
切换return语句和函数的顺序。返回时popularMovies
未定义:
angular
.module('movieCore')
.factory('PopularMovies', factory);
factory.$inject = ['$resource'];
function factory($resource) {
function popularMovies() {
var token = 'teddybear'; // TBC
return $resource('popular/:movieId', { movieId: '@id' }, {
update: {
method: 'PUT',
headers: { 'authToken': token }
},
get: {
method: 'GET',
headers: { 'authToken': token }
},
query: {
method: 'GET',
headers: { 'authToken': token }
},
save: {
method: 'POST',
headers: { 'authToken': token }
},
remove: {
method: 'DELETE',
headers: { 'authToken': token }
}
});
}
return {
popularMovies: popularMovies
};
}