Rem1te
в общем надо более реальный код что бы подсказать
Sheridan
да я уже по другому сделал. Собрал список ключей, по которым точно будут изменения и их присваиваю
Rem1te
Будьте аккуратны с таким переприсваиванием
потому что если
someFunction(baz) {
var a = baz;
}
var foo = {
bar: {},
baz: {},
}
someFunction(foo.baz);
foo.baz = { test: 'test'};
То вот там внутри someFunction, а навсегда будет связано со значением которое лежало в foo.baz до того как туда присвоили новое значение
Sheridan
нууу..... Следи за руками
foo = {bar: {aaa: 123}}
func(v) { v.aaa = 321; }
func1(v) { v = { bbb: 555 }; }
func(foo.bar);
console.debug("1", bar);
func1(foo.bar);
console.debug("2", bar);
Как ты думаешь в логах 1 и 2 что будет? )
Sheridan
подправил
Rem1te
ну это то о чем я говорю как раз :)
в обоих случаях будет ааа: 321
Rem1te
но это не страшно когда переопределение происходит внутри функции
Rem1te
другое дело если ты кинул значения в контроллер, потом в сервисе его обновил, а в контроллере оно по прежднему старое
Rem1te
и ты такой О.о
Sheridan
понимаешь ли. из за промайзов нельзя построить линейный алгоритм
Sheridan
приходится через ссылки значение устанавливать
Sheridan
и тут тоже засада
Rem1te
вай нот?
Sheridan
вроде бы ссылка
Sheridan
но вот хрен
Rem1te
есть всякая магия типа Promise.all
Rem1te
или async/await
Rem1te
я точно могу сказать что делать хттп запросы в цикле не лучшая идея :)
Sheridan
вай нот?
всмысле? Ну уберите return вообще из языка, нафига они с таким отношением? )))
Rem1te
это почти как базу в цикле дрочтиь :)
Rem1te
у тебя на все про все 1 поток
Rem1te
ты не можешь просто так взять и заставить джаваскрипт ждать окончания асинхронных действий
Rem1te
точно так же как ретёрн из сеттаймаута, это ретерн в никуда
Rem1te
это просто небольшой ликбез по поводу "убери ретёрны они ненужны"
в принципе если мы говорим о возвращении данных из асинхронного кода в синхронный - то да они не нужны :)
Давид
Привет всем
angular.element($window).on('resize') - работает
но angular.element('body').on('resize') - нет
мне надо сабите для body
от чего может быть ?
Rem1te
У боди нет ивента ресайз
Anton
ребята, у меня есть такой шаблон : <input class="form-control"
typeahead-select-on-blur="true"
id="search_query"
type="text"
ng-model="channel"
placeholder="@channel"
>
<button ng-mousedown="" ng-disabled="sending" ng-click="sendMessageToChannel()" class="btn btn-primary">
<span class="fa fa-paper-plane"></span>
<span class="hidden-xs">{{:notifierTranslate:'Отправить'| translate}}</span>
</button>
и почему-то, когда я нажимаю на кнопку отправить, $scope.channel всегда равен пустой строке ( я так задал при создании, то есть $scope.channel = ‘’;
Anton
почему такое может быть ?
Anton
я думал, что с контроллером что-то не то, но метод, который на кнопке вызывается нормально
Anton
может проблема в том, что я открываю это через модалку
var uibModalInstance = $uibModal.open({
templateUrl: 'app/modules/telegram-channel/view/telegram_post_modal_form.html',
controller : 'TelegramChannelModalCtrl',
size : 'lg',
backdrop : 'static',
windowClass: 'task-modal-window mobile-summerNote-fullscreen-edition',
});
и ng-model не апдейтит значения в контроллере
Anton
а как это пофиксить?
Sergey
Sergey
https://angular-ui.github.io/bootstrap/#!#modal
Sergey
Посмотри там
Sergey
Как передавать в модалку и как из неё забирать данные
Anton
а вопрос: я так понимаю resolve {
data: $scope.data
}
передаст $scope.data в контроллер модалки, а как мне в модалке записать данные в эти переменные, чтобы они изменились в родительском контроллере?
Anton
Вообще, я просто не понимаю, вроде же должна менятся модель в контроллере модалки, если я вписываю что-то в инпут, но она не меняеется, я почитал, но не въехал чет
Sergey
$uibModalInstance.close($ctrl.selected.item);
Sergey
Это передать в промис модалки значение
Sergey
modalInstance.result.then(function (selectedItem) {
Sergey
Это уже в контроллере, забрать его
Sergey
Если передавать через resolve, то в контроллере модального окна данные будут доступны в inject
Sergey
Anton
В контроллере модального окна не меняется биндинг?
я не делал биндинг.
На самом то деле мне даже не нужно ничего передавать, в parent контроллер, мне просто нужно чтобы менялась модель в child-контроллере, который обслуживает модалку, в нем вся логика прописана, но модель не меняется.
Sergey
Ну не факт что она туда по ссылке уходит
Sergey
Я в общем ничего не понял)
Sergey
Давай пример в песочнице, так непонятно
Anton
ну смотри, есть main контроллер.
в нем есть метод
$scope.showForm = function () {
var uibModalInstance = $uibModal.open({
templateUrl: 'app/modules/telegram-channel/view/telegram_post_modal_form.html',
controller : ‘childCtrl’,
size : 'lg',
backdrop : 'static',
windowClass: 'task-modal-window mobile-summerNote-fullscreen-edition',
});
} он, соответсвенно открывает модалку, которую обслуживает childCtrl, надеюсь, пока ясно.
Дальше открывается модалка, там есть инпут <input ng-model=‘text’ type=‘text’>
к нему привязана модель text, которая опеределенна в контроллере childCtrl, по идее, если бы это бы не была модалка, а самый обычный шаблон страницы, то когда я вписывал бы что-то в инпут, то значенее бы менялось и в моделе, которая в контроллере, но в случае с модалкой у меня ничего не меняется, как я определил в childCtrl, что $scope.text = ‘’ так она даже после ввода в инпут остается равной пустой строке. Как это пофиксить?
Sergey
Хз, у тебя там $scope, без изоляции
Sergey
Всё должно работать в модалке точно так же как не в модалке
Sheridan
чтото меня ангуляр в тупик загнал....
load_projects(projects)
{
console.debug('projects dump', projects);
http.post('/loader.php',
{
type: 'foo',
projects: projects
})
.success((data) =>
{
this.data = data;
});
}
в консоль выводит список, всё верно.
В бэкенд приежжает словарь. type верный, а projects - пустой
о0
Sheridan
Sergey
on-change
Так он же после изменения модели вызывается
Sheridan
а ты об ng-model вливаешь или в тег сразу?
Anton
Sheridan
ну тогда должно работать
Sheridan
смотри в консоль, дебаж...
Anton
я в шоке, от чего такое может быть, методы работают нормально
Anton
и главное же выводятся значения в инпут
Sheridan
жаваскрипт, туды её в качель. Вот и я ща со схожей проблемой сижу...
Sergey
Может быть он ожидает массив например в form кодировке
Sergey
Ну не совпадают его ожидания с форматом того что ты отправляешь, вот он для ссылочного типа и ставит дефолт null
Sergey
По крайней мере у меня это 90% такого, ещё имена полей бывает)
Sheridan
ну как бы я слабо себе представляю как может быть что половина приехала, потловину по дороге растеряли.
Массив то приезжает. Поля названы верно, в первом поле значение верное. Второе поле - пустое, точнее пустой массив
Sergey
Ну как, что смог распарсить то присвоил, что не смог - дефолт
Sergey
Там null массив? Или пустой?
Sergey
Может что-то с самим проектами
Sheridan
Sergey
Значит сами проекты не распарсились
Sergey
А если не через консоль смотреть, а через Network в браузере?
Sergey
https://stackoverflow.com/a/16276375
Sergey
Нг не умеет сериализовать массивы
Sheridan
Anton
знаете как пофиксил?
Sergey
Зачем люди на нём пишут >.<