Sergey
Получайте из модалки ссылку
Sergey
Или то что надо для её генерации
Sergey
По нажатию кнопки ОК в модалке передавайте модель в $mdDialog.hide({propA:....})
Sergey
Там где вы вызывали $mdDialog.show({...}).then((model) => {const url = .....; $state.go(url)});
Sergey
$mdDialog.cancel не возвращает данные, он резолвит промис со значением "ошибка, отклонено, отмена"
pa[aad
https://github.com/typestack/class-validator
Igor
Там где вы вызывали $mdDialog.show({...}).then((model) => {const url = .....; $state.go(url)});
ааа, так понятнее) а так можно было?) надо немного переделать свой код
Sergey
https://github.com/typestack/class-validator
Клёво! По ходу то что надо
Oleg
Ramazan
всем привет
Ramazan
народ подскажите плиз как <select custom-directive></select>
Ramazan
отслеживать изменения значение
Ramazan
scope.$watch(atrrs.ngModel - не хватает так как он срабатывает только когда фокус меняется или когда выбираем значение из списка, у меня select с фильтром там можно вводить символы
pa[aad
Бот ?
Sergey
Экспресс-тест Тьюринга))
Sergey
@jashka_jashka тут спам
Андрей
плз, кто может помочь залить проект на гит пейджес, уже не знаю что и делать
pa[aad
есть же куча мануалов по этому
pa[aad
одна ветка для кода другая для билда ветка которая будет показываться указывается в настройках
pa[aad
задолбали боты, ща будет зачистка
Евгений
Есть кто живой?
Артур
+
Евгений
Не подскажите пару ответов на вездесущий вопросы?
Rem1te
Евгений
К делу: 1) Есть контроллер, есть у контроллера директива... Куда передать данные правильнее в директиву (массив данных) или в контроллер потом передать через аттрибут 2) Данные передаються через WebSocket, и инногда вэбсокет глючит Как правельнее всего было-бы организовать обработку на морде (frontend) что доступны данные будут только если данные получены. Сейчас это реализованно на Promise API
Евгений
Примеры кода: WebSocket Client: // Настройки для WebSocket =) app.run(['$rootScope', $rootScope => { let wsurl = document.location.href.replace(/^(http)(s?:\/\/([^\/]+)).*/, 'ws$2/echo'); let wstry = 0; let websocketConnection = null; let websocketCallbacks = {}; // TODO:: Create message expiration! [_id : [onsucces,onerror,dateNow]] $rootScope.websocketReady = false; // WebSocket Callback Parser $rootScope.$on('ws:raw', (event, msg) => { // e.data instanceof ArrayBuffer // e.data instanceof Blob // typeof e.data === "string" if (typeof msg === "string" && msg[0] === '{' && msg.slice(-1) === '}') { try { let response = JSON.parse(msg); if ((response.action === "callback") && (typeof websocketCallbacks[response._id] !== "undefined")) { let [onsuccess, onerror, expired] = websocketCallbacks[response._id]; delete websocketCallbacks[response._id]; if (typeof response.error === "undefined") { onsuccess(response.data); } else { onerror(new Error("ws:error: " + response.error)); } } } catch (err) { } } }); // WebSocket Handler/Reloader function WebSocketReloader() { let ws = new WebSocket(wsurl); ws.onopen = event => { wstry = 0; websocketConnection = ws; $rootScope.$apply(function () { $rootScope.websocketReady = true; }); $rootScope.$emit('ws:ready', event); }; ws.onclose = event => { websocketConnection = null; $rootScope.$apply(function () { $rootScope.websocketReady = false; }); $rootScope.$emit('ws:close', event); window.setTimeout(WebSocketReloader.bind(this), (wstry<5 ? (++wstry*1000) : 5000)); }; ws.onmessage = event => { $rootScope.$emit("ws:raw", event.data); }; ws.onerror = event => { $rootScope.$emit('ws:error', event); }; } WebSocketReloader(wsurl); $rootScope.wsCall = (name, ...args) => { return new Promise((onsuccess, onerror) => { let _id = (d => [d.getUTCFullYear(),d.getUTCMonth()+1,d.getUTCDate(),d.getUTCHours(),d.getUTCMinutes(),d.getUTCSeconds(),d.getUTCMilliseconds()].join('/')).call({}, new Date()); websocketCallbacks[_id] = [onsuccess, onerror, new Date()]; if (websocketConnection != null) { websocketConnection.send(JSON.stringify({ "action": "call", "call": name, "_id": _id, "attr": args })); } else { let interval; interval = window.setInterval(function () { if (!$rootScope.websocketReady) return; window.clearInterval(interval); $rootScope.wsCall(name, ...args) }, 1000); } }) }; }]);
Евгений
WebSocket Request: $scope.$root.wsCall('order.create.new') .then((data) => $scope.$apply((data) => { $scope.order.create.data = data; })) .catch(err => console.error(err));
Евгений
Где (Запрос): { action: "call", /// Процедура со стороны сервера _id: "уникальный id запроса", // call: "имя.функции", // например 'order.create.new' attr: "что либо", } Ответ: { "action": "callback", // Определяет что это ответ на call "_id": "8797807807801", // Тот-же id что и _id запроса - то-есть логический это ответ для Promise.then "data": "какой либо результат" // Данные ответа }
Евгений
Вопрос больше реторический - как красиво сделать запрос/ответ/ошибка
Евгений
Что лучше делать если ошибка - как сделать повтор и красивый диалог повторов
Sergey
Вопрос больше реторический - как красиво сделать запрос/ответ/ошибка
А есть какой-то смысл почему это всё в rootScope, а не в сервисе?
Sergey
А по поводу кросиво сделать, может быть елси скрестить https://cvuorinen.net/2016/05/using-rxjs-observables-with-angularjs-1/ с https://github.com/ohjames/rxjs-websockets
Sergey
Сам я конечно так не делал, но выглядит как выполнимая задача
Sergey
Туда просто так и просятся Observable
Stas
подскажите есть urlPattern: '/property/:propertyId/reservation-source(/:id)/trashed()'; как для трешеда устьановить дефолтное значение по умолчанию?
Aleksandr
Всем привет. У меня вопрос по либе ng-metadata. Код пишется на TS. Пытаюсь создать директиву аналогичную ng-if. Во втором ангуляре делается на раз. В первом тоже можно. А вот ng-metadata не получается. Я попробовал использовать привемр из первого, но не взлетает. Если есть у кого идеипомогите плиз. https://stackoverflow.com/questions/20325480/angularjs-whats-the-best-practice-to-add-ngif-to-a-directive-programmatically (edited)
Aleksandr
Она используется в проекте чтобы одновременно поддерживать typescript и js со старым кодом
pa[aad
и зачем изобретать заново ng-if ?
Aleksandr
ну как в примере такая же фигня с доступом. Чтобы не прокидывать в 10 компонентов значение, что доступ закрыт и использовать как ng-if=‘$ctrl.hasAccess’ А просто повесить на любой компонент директиву my-aceess. И элемент не отрендеритьяс если доступ запрещен.
Sergey
И получилось дикое говно, вот)
pa[aad
export default function WhenUserDirective(AuthService: AuthService) { 'ngInject'; return { restrict: 'A', link: (scope, element, attrs) => { const watcher = scope.$watch(() => AuthService.isRest(), (val) => { if (val) { element.hide(); } else { element.show(); } }); scope.$on('destroy', () => { watcher(); }); } } }если хотите что бы контент удалялся это можно сделать, но тогда вам нужно еще его и вставить и хранить где-то
pa[aad
директиву вешаю на блоки где мне нужно таким образом <div only-user>... тут что-то html</div>
Aleksandr
hide() show() это же просто display: none. Элемент все равно отрендериться.
Sergey
Ну насколько я понял код, оно толкьо одно значение проверяет из сервиса
pa[aad
Ну насколько я понял код, оно толкьо одно значение проверяет из сервиса
это только было сделано для корзины и еще чего-то типа для ресторана скрыть а для пользователя показать
Sergey
Понятно) У меня проверок разных десятки, как их бы так красиво завернуть я так и не придумал
pa[aad
hide() show() это же просто display: none. Элемент все равно отрендериться.
в директиве можете заюзать удаление элемента, он вроде возвращает html который удалили где-то храните и потом вставляйте когда нужно делов то
Sergey
А просто исходники ng-if нельзя скопировать в директиву?)
Aleksandr
Ребят мы не пишем на js. А пишем на TS какбы пользуясь всеми фишками ангуоляр 2. Это все предоставляет ng-metadata, компилируя потом все это добро в первый ангуляр. Поэтому хрен поймешь как это реализовать
Sergey
А тс он какой-то волшебный, к жс никак не относится? Ну смотрите что там декоратор генерирует)
pa[aad
Ребят мы не пишем на js. А пишем на TS какбы пользуясь всеми фишками ангуоляр 2. Это все предоставляет ng-metadata, компилируя потом все это добро в первый ангуляр. Поэтому хрен поймешь как это реализовать
мы так и не поняли в чем проблема, возьмите посмотрите как сделали ng-if и переведите на ts к черту что вы используете ng-metadata и ts если все равно это в первый ангуляр и чистый js компилится
Dmitry
Всем привет. Есть родителский div с ng-swipe-left и ng-swipe-right внутри есть дочерний div. Как отменить ng-swipe-left и ng-swipe-right на дочернем?
Ԓ̵̟̻̪̥͍̹̦̼͑̋́̽̎͒̑͆̚͜͜о̶̢̛̖̞̬̥̪͎̖̗̗̝̯̫͈̜́̋͋͆̒̔͊̍̑̄͝р̷̥̠͓̘͎̑̋̚д̶͒́
Talgatio
Привет всем! как в ng-options подставить значение из ng-model??
Talgatio
Полчучается такая структура. В зависимости от стейта у меня ng-model может быть пустой, а может с серевера прилетать данные. Так вот, когда с сервера прилетают данные как их подставить в ng-options, чтобы стояли данные вместо заглушки ? http://prntscr.com/ku076c
Sergey
Попробуйте track by заюзать
Sergey
Бидулька
Talgatio
У меня меняется ng-model, но option остаётся в том же состоянии
Talgatio
Тоесть ng-model принимает значение с сервера, но option остаётся прежним
Manar
а vm.sports обновляешь?
Sergey
А если принудительно $apply позвать через $timeout?
Talgatio
а vm.sports обновляешь?
vm.sports это массив спортов
Sergey
Чёто не получается повторить
Sergey
Сможете воспроизвести?
Sergey
Ну или дело как раз в timeout, но в планкре хрен сделаешь по-другому асинхронщину
Sergey
Ну вот. А то не буду, не вариант))
Igor
всем привет) кто подскажет как сделать поле для ввода дробного числа?