我想做的是在整个控制器中全局使用功能。问题是当我想使用我在first函数中的服务内部定义的函数时。它显示找不到功能的错误。我试过不带this关键字,但是它不起作用。在其他控制器中尝试时,我可以转到all函数,这是一个好信号,表明我可以全局使用此服务。
总之,我想在first函数中使用all函数。
app.factory("UserService", function() {
var users = ["Peter", "Daniel", "Nina"];
return {
all: function() {
return users;
},
first: function() {
var users = this.all();
return users[0];
}
};
});
上面的代码是我制作的一个示例,真实的代码看起来像这样。控制器
angular.module("app").requires.push("app.region");
我将区域放到应用程序中,以便可以使用该服务。之后,我做了一个像这样的控制器
.controller("regionCreateController", ["$scope", "phoneMaskService", function ($scope, phoneMaskService) {
$scope.createClicked = function (data) {
data = phoneMaskService.putMaskOnRegion(data);
console.log(data);
};
}
当我放入phoneMaskService时,这是我在app.js中提供的服务,但失败。
避免绑定问题的一种方法是在工厂内部声明函数:
app.factory("UserService", function() {
var users = ["Peter", "Daniel", "Nina"];
return { all: all, first: first };
function all() {
return users;
}
function first() {
var users = all();
return users[0];
}
});
您需要引用内部函数的工厂名称,因为“ this”将与当前方法相关,而不是工厂。
app.factory("UserService", function() {
var users = ["Peter", "Daniel", "Nina"];
return {
all: function() {
return users;
},
first: function() {
var users = UserService.all();
return users[0];
}
};
});