
Uladzislau
04.09.2018
14:05:49
Попробую, спасибо ?

Remite
04.09.2018
14:07:36

Uladzislau
04.09.2018
14:08:01
Обязательно)

AluV
04.09.2018
16:25:51
Как мне в контроллере установть кастомную ошибку:
$scope.ctrl.form.fservice.$setValidity("exists", !!services);
Если на момент выполнения form не существует ?
Наверное только watcher устанавливать и писать свой сервис.

Google

Sergey
04.09.2018
17:07:15
А почему её не существует? Это не контроллер этой формы? Или она под ng-if? А просто добавить в валидаторе if(....form) {.... нельзя?

AluV
04.09.2018
17:15:37
Вообщем angularjs и валидация несовместимые вещи, разве что писать свои директивы валидации и регистрировать по всему приложению.
Я написал вот такую функцию: https://pastebin.com/8C33D2QD
А ng-messages не могут нормально отрисовать ничего, это типо пока не открыл - не закрыл dropdown, required не отрисуется.
А когда ты косаешься контролла он очищает $error и после цикла валидаторов заново все назначает и моя ошибка пропадает.

Sergey
04.09.2018
17:44:19
Вы что-то страшное делаете
Валидаторы бегут каждый дайджест
И директива валидации - почему нет? Если это и есть способ встраиваться в пайплайн валидации

Remite
04.09.2018
17:51:41
angularjs и форма с валидацией это самое сильное оружие в нгджс. а уж если у Вас что-то не едет, то виновата не библиотека
как то так

Sergey
04.09.2018
18:17:16
Хотя, валидация без ng-model это полная хрень получается
Я делал для блока чекбоксов упакованных в компонент
Ну такое

Ramazan
05.09.2018
03:01:07
всем привет
подскажите нормально ли пользоваться фабрикой и хранить там объект, который будет меняться при подгрузке разных view, после чего контролеры view при http.get будут передавать этот объект на сервер

Oleg
05.09.2018
06:23:50

Google

Ramazan
05.09.2018
07:26:37
app.config($routeProvider,routeServices){
var promiseObj = routeServices.getRoutes();
promiseObj.then(setRoutes(value));
function setRoutes(routes){
routes.forEach(function(route){
$routeProvider.when(route.path,routeproperties)
})
}
}
app.config('routeServices',function($http,$q)){
return{
getRoutes : function(){
var deferred = $q.defer();
}
}
}
а так можно делать?

Sergey
05.09.2018
07:48:26
А если вам скажут нет, что будет?)

AluV
05.09.2018
08:02:07

Sergey
05.09.2018
08:08:18

AluV
05.09.2018
08:09:39
Какая разница, я про то, как это работает. Удобные методы, добавление своей валидации проверка на определенные правила. Гибкость 100%, где гибкость в ангуляре ?

Sergey
05.09.2018
08:11:23
Ну вы какого-то кадавра построили, а он не работает

Andrey
05.09.2018
08:11:51
реально валидация в 1 ангуляре желает быть лучшим намного

Sergey
05.09.2018
08:12:01
нг1 он весь на директивах, можно конечно плыть против течения, но толку

AluV
05.09.2018
08:15:00
Вот это уже на что то человеческое похоже, правда не ангуляр: https://github.com/monterail/vuelidate

Remite
05.09.2018
08:18:55

AluV
05.09.2018
08:22:19
Я ниже привел пример для фронта, нет никакой разницы. PHP интерпретируется и код в нем лимитирован по жизненому циклу и Js тоже.
Я могу так же сравнивать Java и TypeScript. У них свои задачи, архитектуру можно строить аналогичным способом.
Модели, сервисы, MVC, все тоже самое. Если что то реализовано по разному это конкретная реализация фреймворка.
В JavaSpring я не нашел нормальных человеческих миграций, но это не значит что их нельзя сделать на Java или они будут выглядить по другому чем на других языках.
мы все равно используем абстракции языка.
Я и говорил про абстракцию.

Sergey
05.09.2018
08:26:06

Remite
05.09.2018
08:26:24
у ПХП - жизненный цикл вызвал - отработал - умер
У джс - запустился - реагирую на пользователя.
Конечно в таком случае контролировать потоки данных становится сложнее поскольку поведение пользователя зачастую не предсказуемое
Далее, Вы можете описать сервис для валидации данных, который Вам вернет обьект ошибок с ключами и раставить их везде, в этом нет ничего сложного, повторюсь ещё раз, если вы что-то сделали и у вас оно не едет, но едет у миллионов других разработчиков, то дело не в технологии


AluV
05.09.2018
08:27:33
»>У джс - запустился - реагирую на пользователя.
Окей, Js => Как работают контекст. Как он работает в браузере.

Remite
05.09.2018
08:27:33
Вы начали сравнивать два фреймворка которые заточены под совершенно разное.
Один под фронт второй под бек, у них совершенно разная логика поведения, структура, и их функции

AluV
05.09.2018
08:28:12
Логика поведения может быть разная, API для разработчика одинаковый

Google

Remite
05.09.2018
08:28:17
Вот если бы вы взяли реакт и сказали - Вот в реакте лучше потому и потому, спор был бы аргументирован

Sergey
05.09.2018
08:28:17
@Alu_V вы может изначальную задачу расскажете? Может у нас тоже пригорит

Remite
05.09.2018
08:28:59

Sergey
05.09.2018
08:29:10

Remite
05.09.2018
08:30:07
ну да, там не такое, а в ангуляре 2+ там вообще с этим все хорошо :)
Увы и ах :(

AluV
05.09.2018
08:31:25
Я не могу про валидацию ReactJs сказать ничего хорошего, там просто все проще,поэтому делашь как хочешь

Remite
05.09.2018
08:34:19
Ну не знаю, как по мне реакт + валидация + формы = боль и страдания

AluV
05.09.2018
08:38:44
Ну там есть разные расширения типа react-validation и другие очень похожие. Этим вполне можно пользоваться

Ramazan
05.09.2018
08:45:38

Sergey
05.09.2018
08:46:24
Ну просто я не понимаю что именно вас в том коде беспокоит

Ramazan
05.09.2018
08:47:35
ну у меня сервис зависит от модуля а модуль от сервиса
и ругается на инджект

Sergey
05.09.2018
08:47:46
Зачем он такой нужен я тоже не особо понимаю, но я не работал со встроенным роутером

Ramazan
05.09.2018
08:47:48
я не пойму что ему не нравиться

Sergey
05.09.2018
08:51:53

Ramazan
05.09.2018
08:53:11
почти
у меня тоже .net mvc
только тут в примере статические, а уменя динамические

Google

Sergey
05.09.2018
08:55:18
Ну я с мвц не работал, идею понимаю только примерно
В доке это просто вставка произвольного кода в произвольное место
В нг1 строительные блоки - директивы и компоненты
Я так и не понял что вы пытаетесь достичь)

AluV
05.09.2018
09:07:06

Sergey
05.09.2018
09:07:19
C asp mvc
У меня asp core webapi

AluV
05.09.2018
09:08:08
С этим не работал, обошел осознанно стороной

Sergey
05.09.2018
09:08:18
И клиент на нг1, древний как я не знаю что

AluV
05.09.2018
09:13:42
Я на ангуляре могу написать свой валидатор для кастомной директивы ?
require: 'selectorAll',
Что то подобное, потому что сейчас директива валидации вобще не линкуется

Sergey
05.09.2018
09:24:06
У директивы есть ng-model?

Igor
05.09.2018
09:45:22
всем привет) как закрыть модальное окно $mdDialog после нажатия на конопку которая выполняет переход по ng-href . сейчас прикрутил к этой кнопке ng-click="cancel()"
но она закрывает окно при любом раскладе, даже если кнопка ng-disabled = false. а надо чтоб пока она не ng-disabled = true то событие Cancel не работало
код кнопки <md-button md-no-ink class="md-raised md-primary" ng-click="vm.cancel()" ng-href={{vm.SendEmail()}} ng-disabled="editEmailForm.$invalid" id="sendButton" form="editEmailForm-form">send</md-button>

Sergey
05.09.2018
09:48:19
А зачем так делать?
mddialog возвращает промис, оттуда и переходите по then

Igor
05.09.2018
09:48:53
откуда он его возвращает?
и в какой момент

Sergey
05.09.2018
09:49:05
От show

Igor
05.09.2018
09:52:13
про промисы знаю что это ответ сервера типа асинхронной таски. а где тут он принимается или возвращается? есть туториал?
или хотя бы направление куда копать

Google

Sergey
05.09.2018
09:54:25

Remite
05.09.2018
09:56:41

AluV
05.09.2018
10:00:22
У директивы есть ng-model?
Нету, ответ: невозможно. Вот он и ангулярJs, сейчас попробую просто через классы сделать свой div с ошибкой.

Andrey
05.09.2018
10:02:02
Вообще можно валмдировать только модель и нн привязываться к ng model и стандартной валидации
class-validation на ts через декораторы

Sergey
05.09.2018
10:03:44
Там нифига не произвольные данные валидируют

Igor
05.09.2018
10:18:40
mddialog возвращает промис, оттуда и переходите по then
есть у меня директива в которой я и вызываю диалог
$scope.showSendDialog = function () {
$mdDialog.show({
clickOutsideToClose: false,
templateUrl: "app/directives/sendEmail/sendEmailTemplate.html",
controller: "sendEmailController",
controllerAs: "vm",
locals: {
model: _.cloneDeep($scope.model)
}
}).then(function (result) {
$scope.model = result;
});
и как тут сказать чтоб после срабатывания события ng-disabled="editEmailForm.$valid" работала ng-click="vm.cancel()" или проще говоря, как сделать чтоб окно закрывалось после нажатия на активную кнопку

Sergey
05.09.2018
10:29:23
В контроллер диалога инжектится инстанс $mdDialog
Вызывайте $mdDialog.hide(okResult) чтобы промис резолвнулся с резульатом
Или $mdDialog.cancel() чтобы промис реджектнулся

Igor
05.09.2018
11:10:54
куда бы я не поставил это $mdDialog.cancel(); у меня везде он срабатывает и окно только открывается и сразу закрывается

Sergey
05.09.2018
11:14:09
А почему же он срабатывает?
Может быть его кто-то вызывает?

Igor
05.09.2018
11:15:41
это наводящий вопрос? потому что как я посмотрел по деьагу, что браузер по всему коду раз несколько пробегает, вот он его и вызывает

Sergey
05.09.2018
11:16:23
Ну он сам не вызывается, у меня не вызывается
Каким образом он у вас сам собой вызывается, почему?

Igor
05.09.2018
11:18:18
если кинуть его прям в тело контроллера, то вызывается, если кинуть его в функцию SendEmail то вызывается потому что у меня она привязана к кнопке
последнее вообще звучит как не аргумент

Sergey
05.09.2018
11:20:56
Вы что-то не то делаете