Я создаю приложение в AngularJs, и я столкнулся с ситуацией, когда мне нужно вызвать одну и ту же функцию в нескольких представлениях.Функция AngularJs доступна для всего приложения
В этом случае это система магазинов, в которой один и тот же магазин может быть виден во множестве видов. В доме, если он находится рядом с пользователем, в платной рекламе, в результатах поиска и т. Д.
Я знаю, что эта функция должна быть в сервисе, который я уже сделал. Но возникает вопрос: как мне вызвать эту функцию из представления/html?
Я бы хотел избежать повторного определения одного и того же вызова снова и снова в нескольких контроллерах, но до сих пор не нашел ничего, связанного с этой конкретной проблемой.
Это код, у меня есть:
function mainFactory($http) {
var service = {
addFav: _addFav
};
return service;
function _addFav(data, func) {
return $http.post(baseUrl+func,data).then(
function(res) {return res.data;},
function(err) {alert(_errorMsg);}
);
};
}
function HomeController() {
vm.addFavorites = addFavorites;
function addFavorites(data) {
var func = 'function_name';
mainFactory.addFav(data,func);
}
}
function AdvController() {
vm.addFavorites = addFavorites;
function addFavorites(data) {
var func = 'function_name';
mainFactory.addFav(data,func);
}
}
function SearchController() {
vm.addFavorites = addFavorites;
function addFavorites(data) {
var func = 'function_name';
mainFactory.addFav(data,func);
}
}
Как вы можете видеть, мне нужно вызвать ту же функцию в нескольких контроллерах.
Я уже видел несколько других примеров, говорящих, что эта функция используется как функция $ rootScope из .run, но также и предупреждение о том, что не является хорошей практикой для определения функций как функций root.
Любое предложение о том, как это решить?
Edit:
Другое решение я использую прямо сейчас, чтобы иметь «MainController», определенный в теге тела через директивы, так что я могу использовать эту функцию во всем приложении. Но этот контроллер получает возможность сложного обслуживания, с множеством функций/процессов.
Http: // stackoverflow.com/questions/15025979/can-i-make-a-function-available-in-every-controller-in-angular – mrvol
Я не думаю, что сервис - это ответ, определить функцию в верхней части $ scope быть в порядке, $ scope.foo = function() {}, а затем использовать его в своем представлении, например,
Tom
Мой вопрос другой, я уже видел эту тему. Но я хочу избежать повторного вызова функции в каждом контроллере. Я хотел бы определить его в одном контроллере и иметь возможность вызывать несколько видов. – celsomtrindade