рдХреЛрдгреАрдп 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 рд╣реБрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреА рд░рд╛рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдФрд░ рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдШрдЯрдХреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдзрдиреНрдпрд╡рд╛рдж
(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 рдХреЗ рд▓рд┐рдП рдмрдВрдж
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВ рджреВрд╕рд░рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, thx @gkalpak ред @softsimon рдЖрдк рдмрд╕ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдКрдкрд░ рд╕реЗ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
.controller('ActivePlacesController', ActivePlacesController);
рдореИрдВ рднреА рдЗрд╕ рд╕реНрдЯрд╛рдЗрд▓ рдЧрд╛рдЗрдб рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдлреИрди рд╣реВрдВред
@xavhan
$onInit
рдореИрдВ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛:vm.$onInit = activate;
function activate() {
}
рдореИрдВ рдЗрд╕реЗ
init
рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ v1.5.0 рд╕реЗ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛редрдореИрдВ рднреА рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ @johnpapa рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧреНрд░рд┐рдо рд░реВрдк рд╕реЗ рдЖрдкрдХрд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рдиред