Георгий
Имеете ввиду,что в параметр new Promise передать res и reject?
Георгий
Я знаю что такое промисы
Rem1te
в функцию которую Вы передаете в new Promise приходит res b rej
Rem1te
Георгий
И с яваскриптом все норм
Rem1te
new Promise((res, rej) => { res(true) }).then((res) => {console.log(res);});
Георгий
А обработку я произвожу в другом файле
Георгий
В контроллере
Rem1te
Вы резолвите промис неправильно
Rem1te
нельзя просто взять и написать ретурн
Георгий
А можете написать как правильно конкретно на моем примере?
Rem1te
this.getDataFromController = function (data) {
return new Promise (function(res, rej) {
res({
dataForView: data
});
});
}
Георгий
А что вернёт функция?
Георгий
Внутри просима
Георгий
Промиса
Rem1te
функция внутри промиса ничего не вернет,
Rem1te
потому что это не кому читать
Георгий
Ок спасибо вам,попробую
Георгий
Георгий
appCusperco.controller('CartInAbonementController', function ($scope, CONFIG, $http, ProfileCartInAbonementsService) {
ProfileCartInAbonementsService.getDataFromController().then(function(data){
console.log(data);
});
});
Rem1te
ну так передай что не будь в метод гет дата форм контроллер
Rem1te
ну ты же откуда-то раньше дату ждал http://prntscr.com/m353h0
Rem1te
яж незнаю что у тебя в голове
Георгий
то, что вы выделили - эту дату в сервисе я получал из другого контроллера
Георгий
я вообще этот сервис нннаписал , чтоб из одного контроллера перекинуть данные в другой
Rem1te
как вы её передавали из другого контроллера если эти данные нужно прокинуть при вызове метода который вернет промис?
Rem1te
-_-
Георгий
а причем тут это, я из одного контроллера вызвал эту функцию сервиса, проверил, что внутри нее в консоли выводится значение, которое я передал из первого контроллера, теперь в сервисе это значение может быть как то обработано и передано в другой контроллер
Георгий
может просто для получения данных из контроллера первого использовать другую функцию
Rem1te
Ты описываешь метод, в который ты передаешь данные с именем getDataFromController
Который тебе возвращает промис с этими же данными
Для того что бы получить данные в промисе, тебе в этот метод нужно что-то передать.
Если ты не передашь в этот метод данные то ты ничего не получишь.
Если ты хочешь передать данные из одного компонента вд ругой с помощью контроллера, тебе эти данные нужно засторить в сервисе, это делается иначе, например положив данные в переменную
Георгий
засторить - ну то есть создать в сервисе другую функцию, которая вызывается из первого контроллера и ее результат положить в переменную, которую потом передам уже в ту функцию, которая вернет промис?
Rem1te
да
Георгий
appCusperco.service('ProfileCartInAbonementsService', function() {
this.buff = 0;
this.getDataFromController = function (data) {
this.buff = data;
return this.buff;
}
this.sendDataToController = function () {
return new Promise (function(res, rej) {
res({
dataForView: 7
});
});
}
});
Георгий
'это сервис
Георгий
appCusperco.controller('CartInAbonementController', function ($scope, CONFIG, $http, ProfileCartInAbonementsService) {
ProfileCartInAbonementsService.sendDataToController().then(function(data){
console.log(data);
// $scope.sumAbonementsInCart = data.dataForView;
// console.log("sss", $scope.sumAbonementsInCart);
});
});
Георгий
а это принимающий контроллер
Георгий
но в консоли пусто опять
Rem1te
поставьте коносль лог в методе sendDataToController и проверьте что он вызывается
Георгий
не вызывается
Rem1te
console.log(ProfileCartInAbonementsService.sendDataToController())
в контроллере
Rem1te
сделайте
Георгий
также
Rem1te
также
так же не вызывается ?
Георгий
да
Георгий
пусто
Rem1te
ну значит контроллер не запускается и не дергает метод из сервиса
Георгий
ну тогда бы писалось о том, что он не зарега
Георгий
я подключил контроллер где все контроллераы подключаются
Rem1te
а метод дернули ?
Георгий
ну конечно, я ж присылал код
Георгий
appCusperco.controller('CartInAbonementController', function ($scope, CONFIG, $http, ProfileCartInAbonementsService) {
console.log(ProfileCartInAbonementsService.sendDataToController());
ProfileCartInAbonementsService.sendDataToController().then(function(data){
console.log(data);
// $scope.sumAbonementsInCart = data.dataForView;
// console.log("sss", $scope.sumAbonementsInCart);
});
});
Rem1te
значит твой контроллер негде не используется, если первая строчка его линк функции не отрабатывает
Георгий
<div ng-controller="CartInAbonementController">
Георгий
используется
Rem1te
тогда почему не отрабатывает ни одна строчка твоего контроллера ?
Георгий
самое интересное, что при загрузке страницы содержимое консоли отобразилось
Георгий
правильно
Георгий
но оно должно срабатывать после нажатия на определенную кнопку
Георгий
я так понимаю, что нужно таймаут добавить?
Rem1te
ну потому что произошла регистрация контроллера, и отработал первый консоль лог
после него следом отработал ProfileCartInAbonementsService.sendDataToController и вы получили то что хотели
Rem1te
а если после нажатия на определенную кнопку то вам нужно написать внутри контроллера метод который забиндить на определенную кнопку
Rem1te
через ng-click=
Георгий
чето я запутался
Георгий
можно конкретнее
Георгий
то есть таймаут не нужен?
Rem1te
а зачем вам таймаут ? что вы хотите отложить ?
Георгий
я просто не пойму почему при загрузке выводится, а при нажатии на кнопку, по которой у меня стоит ng-click и вызывается функция сервиса, которая в консоли выводит передаваемое из первого контроллера заначение, не выводится
Георгий
вот сервис
Георгий
вот что тут не так?
Георгий
вот контроллер
Георгий
appCusperco.controller('CartInAbonementController', function ($scope, CONFIG, $http, ProfileCartInAbonementsService) {
ProfileCartInAbonementsService.sendDataToController().then(function(data){
console.log(data);
// $scope.sumAbonementsInCart = data.dataForView;
// console.log("sss", $scope.sumAbonementsInCart);
});
});
Rem1te
а что по ng-click вы вызываете?
Георгий
<a ng-click="addToCart($index)" href="" class="pa-buy-abonements__btns--add-to-cart">В корзину</a>
Георгий
addToCart($index)
Георгий
вот эту функцию в первом контроллере
Георгий
далее дергаю функцию сервиса
Георгий
ProfileCartInAbonementsService.getDataFromController($scope.sumAbonementsInCart);
Rem1te
я нихера не врубаюсь что у вас происходит, и мне кажется Вы тоже
Rem1te
выложите куда-то код ваших двух контроллеров, айки и сервиса