То, что я пытаюсь сделать, это использовать функцию глобально на всех контроллерах. Проблема в том, что я хочу использовать функцию, определенную внутри службы, в функции first . Он показывает ошибку, что не может найти функцию . Я пытался без этого ключевого слова, но оно не работает. Я могу go до все функционировать, когда я пробовал в других контроллерах, что является хорошим признаком того, что я могу использовать эту службу глобально.
Короче говоря, я хочу использовать функцию all внутри first function.
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 , то есть сервис, который я сделал в приложении . js, и он не работает.
Это ошибка, которую я получаю
angular.js:14110 ReferenceError: removeAllLetters is not defined
Это фактическая ошибка при создании кода.
.factory("phoneMaskService", [function () {
var returnMethod = {
removeAllLetters: removeAllLetters,
putMaskOn: putMaskOn,
putMaskOnRegion: putMaskOnRegion
};
return returnMethod;
function removeAllLetters(value) {
var val = value.replace(/\D+/g, '').replace('\-', '');
return val;
}
function putMaskOn(value) {
console.log(value);
value = this.removeAllLetters(value);
console.log(value);
var isMobile = parseInt(value.charAt(1)) == 2;
if (isMobile) {
var x = value.replace(/\D/g, '').substring(0, 14).match(/(\d{3})(\d{3})(\d{3,})/);
x = ' ( ' + x[1] + ' ) ' + x[2] + ' - ' + x[3];
return x;
} else {
var x = value.replace(/\D/g, '').substring(0, 14).match(/(\d{2})(\d{3})(\d{3,})/);
x = ' ( ' + x[1] + ' ) ' + x[2] + ' - ' + x[3];
return x;
}
}
function putMaskOnRegion(object) {
angular.forEach(object, function (value, key) {
if (key == "contactNumberPhone") {
var testvalue = this.removeAllLetters(value);
console.log(this);
console.log("test value" + testvalue);
object[key] = this.removeAllLetters(value);
}
});
return object;
}
}])
Ошибка происходит здесь, строка и говорит removeallletters не определены
var testvalue = this.removeAllLetters(value);