Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
export default class Injectable {
constructor ($injector){
this._$injector = $injector;
}
di (){
var args = _.map(arguments, _.clone);
if(args.length == 1){
return this._$injector.get(args[0]);
}
if(args.length > 1){
return _.map(args, function(arg) {
return this._$injector.get(arg);
}, this);
}
}
}
export default class NgController {
constructor ($scope, $injector){
this._scope = $scope;
this._$injector = $injector;
this.log = this._$injector.get('$log');
}
/**
*
* @returns {...String} dependency
*/
di (dependency){
var args = _.map(arguments, _.clone);
if(args.length == 1){
return (this._resolves.hasOwnProperty(args[0]) && this._resolves[args[0]]) ||
this._$injector.get(args[0]);
}
if(args.length > 1){
return _.map(args, function(arg) {
return (this._resolves.hasOwnProperty(arg) && this._resolves[arg]) ||
this._$injector.get(arg)
}, this);
}
}
/**
* @param {String} dependency
*/
resolve (dependency){
return this._$injector.get('$state').$current.locals.globals[dependency];
}
}
export default class MyController extends NgController {
/** @ngInject */ constructor($scope, $injector) {
super($scope, $injector);
var [MyService1, MyService2] = this.di('MyService1', 'MyService2');
MyService1.doSomething();
var data = this.resolve('preloaded'); // Вытаскивает данные resolve-секции роутов. Использую ui.router
}
}
Использование ES6 в AngularJs 1.x со сборкой Browserify+Babel