Angular-styleguide: рдШрдЯрдХ рд╕рд╣рд╛рдпрдХ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдлрд╝рд░ре░ 2016  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: johnpapa/angular-styleguide

рдХреЛрдгреАрдп 1.5 рдХреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рд╣рдо рдШрдЯрдХ рдирд┐рд░реНрджреЗрд╢ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП .component() рд╢реЙрд░реНрдЯрдХрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдореЗрдВ рдХреЛрдИ рд╕реБрдЭрд╛рд╡ рд╣реИ?

рдореИрдВ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рд╕реНрдЯрд╛рдЗрд▓рдЧрд╛рдЗрдб рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдЕрдиреБрдпрд╛рдпреА рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЖрдорддреМрд░ рдкрд░ рдХреИрд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реВрдВред

рдЫреЛрдЯреЗ рд╡рд╛рд▓реЗ, рдирд┐рдпрдВрддреНрд░рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛, рдореИрдВ рдЙрд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдПрдХ рдлрд╣рд░рд╛рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ

(function() {
  'use strict';

  var componentConfig = {
    template: generateTemplate(),
    bindings: {
      kpiVal: '=',
      kpiLabel: '=',
    },
  };

  angular
    .module('app.utils.kpi')
    .component('sfKpi', componentConfig);

  //
  function generateTemplate() {
    return [
      '<div class="sf_kpi">',
      '  <div class="sf_kpi__number">{{ $ctrl.kpiVal }}</div>',
      '  <div class="sf_kpi__label">{{ $ctrl.kpiLabel }}</div>',
      '</div>',
    ].join('');
  }
}());

рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ 'рдЯреЗрдореНрдкрд▓реЗрдЯ рдпреВрдЖрд░рдПрд▓' рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

(function() {
  'use strict';

  var componentConfig = {
    templateUrl: 'components/active-places/active-places.widget.html',
    controller: controller,
  };

  angular
    .module('app.widget.activeplaces')
    .component('activePlaces', componentConfig);

  /* <strong i="12">@ngInject</strong> */
  function controller($log, activityService) {
    var vm = this;

    vm.activities = [];
    vm.isLoading = true;

    vm.doFunnyStuff = doFunnyStuff;

    activate();

    function activate() {
      $log.info('ЁЯСК activating activePlaces component');

      activityService.getActivites()
        .then(fetchData)
        .catch(handleError)
        .finally(stopLoader);

      //
      function fetchData(activities) {
        vm.activities = activities;
        $log.log('ЁЯСУ activePlaces activities fetched: ', activities);
      }
      function handleError(err){
        $log.error('ЁЯТе problem fetching activePlaces data', err);
      }
      function stopLoader() {
        vm.isLoading = false;
        $log.info('ЁЯТк activePlaces component started');
      }
    }

    // methods
    function doFunnyStuff() {
      vm.activities.push('yolo');
    }

  }

}());

рдореИрдВ $onInit рд╣реБрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреА рд░рд╛рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдФрд░ рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдШрдЯрдХреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдзрдиреНрдпрд╡рд╛рдж

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рджреВрд╕рд░рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, thx @gkalpak ред @softsimon рдЖрдк рдмрд╕ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдКрдкрд░ рд╕реЗ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
.controller('ActivePlacesController', ActivePlacesController);

рдореИрдВ рднреА рдЗрд╕ рд╕реНрдЯрд╛рдЗрд▓ рдЧрд╛рдЗрдб рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдлреИрди рд╣реВрдВред

@xavhan $onInit рдореИрдВ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛:

vm.$onInit = activate;

function activate() {
}

рдореИрдВ рдЗрд╕реЗ init рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ v1.5.0 рд╕реЗ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдореИрдВ рднреА рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ @johnpapa рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧреНрд░рд┐рдо рд░реВрдк рд╕реЗ рдЖрдкрдХрд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рдиред

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

(function() {
  'use strict';

  var componentConfig = {
    bindings: {
        data: '<'
    },
    templateUrl: 'components/active-places/active-places.widget.html',
    controller: 'ActivePlacesController as vm',
  };

  angular
    .module('app.widget.activeplaces')
    .component('activePlaces', componentConfig)
    .controller('ActivePlacesController', ActivePlacesController);

  /* <strong i="5">@ngInject</strong> */
  function ActivePlacesController($log, activityService) {
    var vm = this;

    vm.activities = [];
    vm.isLoading = true;

    vm.doFunnyStuff = doFunnyStuff;

    // methods
    function doFunnyStuff() {
      vm.activities.push('yolo');
    }

  }

}());

рдЗрд╕ рддрд░рд╣ рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред

(function() {
  'use strict';

    angular
        .module('app.widget.activeplaces')
        .component('activePlaces', {
            bindings: {
                data: '<'
            },
            templateUrl: 'components/active-places/active-places.widget.html',
            controller: 'ActivePlacesController as vm',
         })
        .controller('ActivePlacesController', ActivePlacesController);

    function ActivePlacesController($log, activityService) {
        var vm = this;

        vm.activities = [];
        vm.isLoading = true;

        vm.doFunnyStuff = doFunnyStuff;

        // methods
        function doFunnyStuff() {
          vm.activities.push('yolo');
        }
    }

}());

рдЗрд╕ рддрд░рд╣ рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@softsimon : v1.5.0 ngMock#$componentController рдХрд╛ рдкрд░рд┐рдЪрдп рдЯреЗрд╕реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: рд╕реНрдорд╛рдЗрд▓реА:

рдореИрдВ рджреВрд╕рд░рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, thx @gkalpak ред @softsimon рдЖрдк рдмрд╕ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдКрдкрд░ рд╕реЗ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
.controller('ActivePlacesController', ActivePlacesController);

рдореИрдВ рднреА рдЗрд╕ рд╕реНрдЯрд╛рдЗрд▓ рдЧрд╛рдЗрдб рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдлреИрди рд╣реВрдВред

@xavhan $onInit рдореИрдВ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛:

vm.$onInit = activate;

function activate() {
}

рдореИрдВ рдЗрд╕реЗ init рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ v1.5.0 рд╕реЗ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдореИрдВ рднреА рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ @johnpapa рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧреНрд░рд┐рдо рд░реВрдк рд╕реЗ рдЖрдкрдХрд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рдиред

:+1: рдХреЗ рд▓рд┐рдП

vm.$onInit = activate;

function activate() {
}

рдШрдЯрдХ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП #766 рдХреЗ рд▓рд┐рдП рдмрдВрдж

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

philmerrell picture philmerrell  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

annabellor picture annabellor  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

samithaf picture samithaf  ┬╖  12рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

nonopolarity picture nonopolarity  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sgbeal picture sgbeal  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ