例如,我们有这个工厂服务,这个服务将获取并设置用户的名字。
app.factory('userService',['$rootScope',function($rootScope){
var user = {};
return {
getFirstname : function () {
return user.firstname;
},
setFirstname : function (firstname) {
user.firstname = firstname;
$rootScope.$broadcast("updates");
}
}
}]);
我可以在此服务中使用getFirstname函数吗?如果可以,那么你可以告诉我该怎么做吗
答案 0 :(得分:0)
是的,如果你将javascript分解成碎片,你可以。而不是在返回对象内定义函数,只需事先将其分配给变量。然后你可以使用工厂内的功能。请记住最后将函数分配给返回对象。
app.factory('userService', ['$rootScope', function ($rootScope) {
var user = {};
var getFirst = function() {
return user.firstname;
};
//Do anything else with getFirst
return {
getFirstname: getFirst, //assign the function to the factory return obj
setFirstname: function(firstname) {
user.firstname = firstname;
$rootScope.$broadcast("updates");
}
};
}]);
答案 1 :(得分:0)
我认为有一种更好的方法可以保持服务代码的整洁和清洁。
CoffeeScript的:
app.factory 'userService', [
'$rootScope'
($rootScope) ->
service =
user: null
getFirstName: ->
service.user.firstname
getLastName: ->
service.user.firstname
setFirstName: (firstname) ->
service.user.firstname = firstname
$rootScope.$broadcast 'updates'
return
getDisplayName: ->
service.getFirstName() + service.getLastName()
]
使用Javascript:
app.factory('userService', ['$rootScope', function($rootScope){
var service = {
user: null,
getFirstName : function () {
return service.user.firstname;
},
getLastName : function () {
return service.user.firstname;
},
setFirstName : function (firstname) {
service.user.firstname = firstname;
$rootScope.$broadcast("updates");
},
getDisplayName: function() {
return service.getFirstName() + service.getLastName();
}
}
return service;
}]);