Access-Control-Allow-Origin: *
// Code goes here
angular.module('app', [])
.controller('FooCtrl', FooController)
.controller('BarCtrl', BarController)
.directive('foo', fooDirective)
.directive('bar', barDirective);
FooController.$inject = ['$window'];
function FooController($window) {
this.notify = function() {
$window.alert('foo ctrl');
};
}
FooController.$inject = ['$window'];
function BarController($window) {
this.notify = function() {
$window.alert('bar ctrl');
};
}
function fooDirective() {
return {
controller: 'FooCtrl'
};
}
function barDirective() {
return {
controller: 'BarCtrl',
controllerAs: 'ctrl',
require: 'foo',
link: function(scope, elem, attrs, ctrl) {
if (elem[0].tagName === 'A') {
elem.on('click', function() {
ctrl.notify();
});
} else {
elem.on('click', function() {
scope.ctrl.notify();
});
}
}
};
}
$state.transitionTo('settings');
app.factory('StatePersist', function() {
var store = {};
function getItem(state, stateParams) {
return store[getKey(state, stateParams)];
}
function writeItem(state, stateParams, scope) {
store[getKey(state, stateParams)] = scope;
}
function getKey(state, stateParams) {
return [state, angular.toJson(stateParams)].join('_');
}
return {
read: readItem,
write: writeItem
};
});
app.controller('ProductsCtrl', function($scope, $state, $stateParams, StatePersist) {
// Инициализация контроллера...
// angular.extend корректно обработает undefined
// если ничего не было сохранено
angular.extend($scope, StatePersist.getItem($state.current.name, $stateParams));
// Записываем данные при уничтожении
$scope.$on('$destroy', function() {
StatePersist.write($state.current.name, $stateParams, $scope);
});
});
select.find('option').eq(1).prop('selected' , true);
var selectScope = angular.element(select).scope();
selectScope.$$phase || selectScope.$digest();
$stateProvider.state({name: 'foo', url: '/foo', template: 'foo'});
<!-- ссылка в разметке -->
<a data-ui-sref="foo">foo</a>
// Переход из контроллеров/сервисов итд
$state.go('foo')
var runSequence = require('run-sequence');
// .. some code
gulp.task('watch', [ /* deps list */ ], function(cb) {
runSequence('jsxconcat', 'includeFilesToIndex.html', cb);
});
<span class="date" data-ng-bind="user.created_at | date:'medium'"></span>
<span class="date">{{ user.created_at | date:'medium' }}</span>
<ul>
<li data-my-directive data-ng-repeat="user in users"> ... </li>
</ul>
// Создаем коллекцию
// link-функция в myDirective вызовется для foo и bar
$scope.users = [{name: 'foo'}, {name: 'bar'}];
// Добавит объект, перерисовки не будет
// link-функция в myDirective вызовется только для baz
$scope.users.push({name: 'baz'});
// Удалим первый элемент - тоже не перерисует
// Вызывается event $destroy в scope элемента
$scope.users.splice(0, 1);
// А вот теперь коллекция изменилась
// Вызывается event $destroy для foo bar baz
// Все перерисуется, link-функция в myDirective вызовется для alice и bob
$scope.users = [{name: 'alice'}, {name: 'bob'}];