• Как организовать обьект formdata чтоб он получился такого вида?

    @emp1re
    obj['a'] === obj.a // true
    если angular, передавайте в контролер/компонент данные затем через сервис работайте с api сервера, напрямую из формы не думаю что хорошо слать данные. И соответственно в контролере работайте с видом ваших данных.
    Ответ написан
    3 комментария
  • Стоит ли и зачем использовать PHP на фронте, где есть Angular?

    @Qvarck
    Подозреваю, ангуляр на этом проекте не нужен. От Вас, как от фронта, нужна вёрстка и, например, jQuery для прочих нужд. Того, кто решил использовать тут ангуляр окропите святой водой дабы из него бесы вышли)
    Либо, если так нужен ангуляр, пусть PHP-разрабы делают бекенд, который просто общается с вашим фронтом по АПИ. Но, кажется мне, это не самое подходящее решение.
    Сейчас фронтом работаю, имею опыт бекенда пару лет. Участвовал в подобных проектах с обоих сторон. Мне описанный Вами подход кажется несколько странным.
    П.С. Не верно говорить про "PHP на фронте". PHP во вьюшках формирует страницы на серве и отдаёт их в уже нужном виде. Это обычной подход при использовании Yii.
    Ответ написан
    1 комментарий
  • Стоит ли и зачем использовать PHP на фронте, где есть Angular?

    azrail_dev
    @azrail_dev
    А ты уверен, что тебе стоит работать над этим проектом? Если у вас нормальный rest api и при этом ведутся странные попытки "прячем участок HTML посредством PHP", вполне реально, что ты не сможешь реализовать то, что даёт тебе ангуляр и себя, как программиста этого проекта.
    Ответ написан
    1 комментарий
  • Стоит ли и зачем использовать PHP на фронте, где есть Angular?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    Стоит ли и зачем использовать Angular на фронте, где есть PHP?

    Но последней каплей была форма логина, которую мне предлагают сделать статичной на пхп и говорят зачем там аякс.

    Если уже работает и уже готово - зачем там ангуляр?

    на "моём" :) фронте был php :)

    великий язык фронтенда прям php.

    Если у вас SPA то все должно быть на ангуляре более менее, это логично.
    А если ваш ангуляр работает через одну страницу, зачем наворачивать лишнее?
    Ответ написан
    2 комментария
  • Стоит ли и зачем использовать PHP на фронте, где есть Angular?

    sayber
    @sayber Куратор тега PHP
    Да, я программирую на PHP и еще асинхронно!
    Все верно.
    На фронте не должно быть PHP вообще.

    К примеру сейчас работаю над крупным проектом, где нонстоп идут финансовые проводки и заказы.
    Бекенд, это api ресурс (rest.site.tdl) реализованый на SF3+DB(любая)+DDD/CQRS/Bus+JTW.
    Он может принимать и отдавать данные в формате json.

    Фронтент - это совершенно др. проект (site.tdl), который физически находится совершенно в другом месте. Реализован на Angular2 type script.

    Т.е. это совершенно 2 разных проекта которые общаются по api.

    Если делать по принципу - все в кучу (и так сойдет), то вполне может настать момент, когда потребуется всех уволить, нанять нормальную команду и реализовать новый проект.
    Ответ написан
    6 комментариев
  • Стоит ли и зачем использовать PHP на фронте, где есть Angular?

    Нет, потом каша будем, если проект большой
    Ответ написан
    Комментировать
  • Как подключить Material Design + Angular 2 + Webpack?

    @kgorozhanov
    Front-End Developer
    Советую использовать Angular CLI
    directive: [MdButton] // Не актуально
    https://material.angular.io/components/component/button
    Ответ написан
    4 комментария
  • Как подключить файл php с помощью детективы ng-include AngularJS с тем же scope что и parent?

    eudj1n
    @eudj1n
    Никак. Используйте языковые конструкции того языка, на котором пишете - в данном случае include.

    Если же нужно последующее получение данных в загруженную страницу - используйте AJAX.
    Ответ написан
    Комментировать
  • Как связать значение кастомной директивы с кастомной директивой из parent scope?

    А зачем вам нужен вот такой изврат с compile? Ведь можно просто сделать через template:
    return {
           require: '^ngModel',
           template: '<input ng-model='mod'>',
           scope: {
                  type: "=",
                  mod: "=",
            },
    }

    Почитайте, как работают директивы на angular js, у вас подход не совсем правильный. Почитать можно например в офф. доке.
    Ответ написан
    7 комментариев
  • Какие преимущества использования Webpack + Gulp?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    webpack бандлер и больше ничего не должен уметь делать. То что там есть плагины которые позволяют запускать таски это прикольно, но все же нет.

    Лично у меня gulp используется для оркестрации всем что у меня используется, запуск тестов, подготовка билда (упаковка и т.д.) ну и т.д. Часть тасков не связана с бандлингом и потому пихать это в webpack что-то не особо хочется.
    Ответ написан
  • Почему Angular плохой?

    @VanKrock
    Angular всего лишь инструмент, если вы умеете им пользоваться и он решает ваши задачи, используйте его, если нет используйте другой инструмент. На Angular достаточно просто решать большой пул задач, если вы будете постоянно только сравнивать инструменты и искать который лучше, то в итоге вместо проекта вы все еще будете искать инструмент, который лучше.
    Ответ написан
    4 комментария
  • Как правильно настроить Jasmine Unit testing?

    voidnugget
    @voidnugget
    Программист-прагматик
    Сначала происходит загрузка boot.js или node_boot.js - там в window или global пишутся все методы jasmine интерфейса. Типа вот так
    'use strict';
    
    var jasmineRequire = require('jasmine-core/lib/jasmine-core/jasmine');
    
    var jasmine = jasmineRequire.core(jasmineRequire);
    window.jasmine = jasmine;
    
    jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000;
    
    var env = jasmine.getEnv();
    var jasmineInterface = jasmineRequire.interface(jasmine, env);
    
    function extend(destination, source) {
      for (var property in source) {
          destination[property] = source[property];
      }
    
      return destination;
    }
    
    extend(window, jasmineInterface);

    Потом идёт добавление репортера, ну или можно написать свой, под конкретные задачи...

    Инициализация под node.js отличается лишь ConsoleReporter'ом, в браузерной используется HtmlReporter.

    После инициализации в window / global уже есть все it describe expect барахло, и можно писать спеки,
    для их запуска просто делается
    jasmine.getEnv().execute();

    Там для ноды отдельно есть "удобная" обёртка для ленивых...
    Если глянуть исходники, то в принципе должно быть понятно по основным методам
    showColors - отображать ли разноцветные сообщения, форточки не умеют
    addSpecFile - добавить файлик спеки
    addReporter - добавить репортер
    configureDefaultReporter, он же ConsoleReporter
    addMatchers не помню
    loadSpecs - просто require спеков
    loadHelpers - просто require хэлперов
    loadConfigFile - загрузка конфига
    loadConfig - загрузка конфига с объекта
    addSpecFiles - добавить кучу файлов спек
    onComplete - вызвать callback по завершению
    stopSpecOnExpectationFailure - прервать выполнение тестов если возникает исключение

    В принципе
    var Jasmine = require('jasmine');
    var jasmine = new Jasmine();
    
    jasmine.loadConfig({
        spec_dir: 'tests',
        spec_files: [
            'requests/**/*.js'
        ],
    });
    
    // или jasmine.loadConfigFile('spec/support/jasmine.json');
    
    jasmine.configureDefaultReporter({
        showColors: false // если это форточки
    });
    
    jasmine.execute();

    Для запуска тестов в node.js будет достаточно.
    Ответ написан
    2 комментария
  • Когда call vs apply vs prototype?

    In4in
    @In4in
    °•× JavaScript Developer ^_^ ו°
    function B(type){};
    B.prototype = new A(); //Ставим В в прототип объект, созданный через A, type для которого не указан
    var b = new B('cool'); //Создаем объект через B, прототипом для которого станет объект, созданный выше. Указываем "cool" просто так, не для чего.
    b.x // 10 - назначеное A
    b.type // undefined; - т.к, вызывали new A(), а не new A('cool')

    function C(type){
        A.call(this, type); 
        //При вызове С через new создается новый объект (this),
        //A назначает ему свойства x и type, но не ставит __proto__, так как не вызвана через New
    };
    var c = new C("cool"); 
    c.x // 10;
    c.type // cool


    Ну и, собственное, истинно верный вариант:
    //Или если приспичит все же поставить результат new A в прототип:
    var b = Object.create(new A());
    Ответ написан
    6 комментариев
  • Что лучше начать изучать для тестирования js кода (AngularJS, jQuery)?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    > mocha, karma, jasmine
    mocha и jasmine — это библиотеки для написания юнит-тестов. karma — тулза для запуска тестов в браузерах (открывает кучу новых окошек и в них автоматически прогоняет тесты при изменении кода и тестов).
    К mocha в пару еще нужна библотека ассертов, например, chai.

    > стоит ли время затрат
    Стоит — если делаете что-то, что потом будет поддерживаться. В этом случае экономится время в долгой перспективе.
    Ответ написан
    Комментировать
  • Как использовать конструктор на практике?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Можно и в массив.

    var persons = [];
    
    button.addEventListener("click", function () {
        persons.push(new Person("Вася"));
    }, false);


    Чтоб исполльзовать этот конструктор необходимо присвоить его переменной:

    Это не присвоение конструктора, это создание нового инстанса.
    Ответ написан
    9 комментариев
  • Есть книги по верстке, не основы css, а именно как верстать правильно?

    serjikz
    @serjikz
    web-developer
    Быстрый ответ: habrahabr.ru/post/114256
    ----------------------------------------------------------
    Если вы знаете основы, значит знаете определенные css правила. Скажите такую вещь, как мне правильно сверстать 3 блока, идущих в ряд горизонтально?
    Варианты ответов:
    1. Используя float
    2. Используя inline-block
    3. Используя flex-box
    4. Используя table
    5. Используя position 0_o (потому что можно задать relative родителю и absolute детям+top/right/bottom/left)

    Правильный ответ: всё выше перечисленное (ну может быть последнее не очень верно, но ведь тоже можно сделать и сделать очень аккуратно, не повредив общей структуры сайта). Ваш вопрос как по мне просто идентичен моему по смыслу. В разных ситуациях используются совершенно разные подходы, а количество этих ситуаций измеряется количеством вашего/чьего-то воображения.
    --------------------------------------------------------------------------------
    Если вы работаете в команде - спросите/посмотрите какой стиль вёрстки использовался до вас и можно ли использовать свой стиль, либо верстать так, как раньше верстали (многие команды даже гайды пишут по этому поводу, к примеру csssr).
    Если работаете один - можно тоже самое blog.csssr.ru/code-guide и ещё в довесок ссыль в начале поста.
    Ответ написан
  • Где ошибка в коде цикла Javascript?

    twobomb
    @twobomb
    Не знаю возможно у тебя не успевало загружать картинки, либо ты забыл взять контекст канвы, код же ты не полностью выложил. Ну вот я сделал, дописал функцию загрузки картинок вроде работает https://jsfiddle.net/twobomb/cdcmb15a/
    Ответ написан
    1 комментарий
  • Где ошибка в коде цикла Javascript?

    chlp
    @chlp
    фулстек
    Для начала, расставьте точки с запятыми.
    Затем, прежде, чем выполнить draw(imgs), вам нужно дождаться загрузки всех изображений с помощью img.onload.
    Ответ написан
    3 комментария
  • Как правильно сделать условие для цикла в данной ситуации на Javascript?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Если очень хочется знать всё до грамма, нужно проверять все направления
    for (var i = 0, result = []; i < arr.length; i++){
    	for (var j = 0, _result = []; j < arr[i].length; j++){
    		_result.push({
    			t: i == 0 ? null : arr[i][j] === arr[i - 1][j],
    			tr: i == 0 || j == arr[i].length - 1 ? null : arr[i][j] === arr[i - 1][j + 1],
    			r: j == arr[i].length - 1 ? null : arr[i][j] === arr[i][j + 1],
    			br: i == arr.length - 1 || j == arr[i].length - 1 ? null : arr[i][j] === arr[i + 1][j + 1],
    			b: i == arr.length - 1 ? null : arr[i][j] === arr[i + 1][j],
    			bl: i == arr.length - 1 || j == 0 ? null : arr[i][j] === arr[i + 1][j - 1],
    			l: j == 0 ? null : arr[i][j] === arr[i][j - 1],
    			tl: i == 0 || j == 0 ? null : arr[i][j] === arr[i - 1][j - 1]
    		});
    	}
    
    	result.push(_result);
    }
    
    console.log(JSON.stringify(result));

    Если же достаточно знать, что ячейка непустая и совпадает с любым направлением, можно проще
    for (var i = 0, result = []; i < arr.length; i++){
    	for (var j = 0, _result = []; j < arr[i].length; j++){
    		var status = !!arr[i][j];
    
    		if (!status) {
    			status = arr[i][j] === arr[i][j - 1] || arr[i][j] === arr[i][j + 1];
    
    			if (!status && i != 0) {
    				status = arr[i][j] && (arr[i][j] === arr[i - 1][j - 1] || arr[i][j] === arr[i - 1][j] || arr[i][j] === arr[i - 1][j + 1]);
    			} else if (!status && i != arr.length - 1) {
    				status = arr[i][j] && (arr[i][j] === arr[i + 1][j - 1] || arr[i][j] === arr[i + 1][j] || arr[i][j] === arr[i + 1][j + 1]);
    			}
    		}
    
    		_result.push(status);
    	}
    
    	result.push(_result);
    }
    
    console.log(JSON.stringify(result));

    Пример
    Ответ написан
    3 комментария