.controller('MyCtrl', function ($scope, myDataProvider, flashBag) {
myDataProvider.getData()
.then(function () {
flashBag.success('All done!');
}, function () {
flashBag.error('Something went wrong...');
});
})
Но мне необходимо, чтобы конфиг загрузился до других модулей\сервисов\итд
directive('ngIsInputValid', function () {
return {
scope: {
input: '=ngIsInputValid'
},
link: function (scope, el, attr) {
scope.$watch('input.$invalid', function (invalid) {
if (invalid && scope.input.$dirty) {
el.show();
}
el.hide();
})
}
};
});
<input class="d-form__input-text"
name="pickup__point_address"
ng-model="pickup__point_address"
ng-required="true"
ng-focus="focusHandler($event)"
ng-blur="blurHandler($event)">
<div class="d-form__error"
ng-show="orderingForm.pickup__point_address.$invalid && orderingForm.pickup__point_address.$dirty">
<span class="d-form__exlmark"></span> Пожалуйста заполните поле
</div>
<ul>
<li data-ng-repeat="car in Model.cars" data-draggable="car" data-draggable-item="car">{{car.modelName}}</li>
</ul>
<ul>
<li data-ng-repeat="garage in Model.garages" data-droppable="car" data-on-drop="doSomething">{{garage.name}}</li>
</ul>
// controller
$scope.doSomething = function (car, garage) {
// ставим машинку в гараж, убираем ее из списка если хотим, или что-то еще...
// контроллер в этом случае вообще ничего не знает о drag n drop,
// только о том что что-то нужно сделать с данными.
};
<ul data-foo="{{foo.bar}}">
scope: {
model: '@foo'
},
scope: {
model: '=foo'
},
angular.module('app')
.factory('myApi', function ($http, $q) {
return {
list: function () {
return $http.get('/points').then(function (response) {
return response.data;
}, function () {
return $q.reject(); // произошла какая-то ошибка
});
},
add: function (point) {
return $http.post('/points', data).then(function (response) {
if (201 === response.status) { // если на сервере все сохранилось удачно
return response.data;
}
return $q.reject(); // как-то не удалось
}, function () {
return $q.reject();
});
}
}
})
.controller('MyCtrl', function ($scope, myApi) {
myApi.list().then(function (points) {
$scope.points = points;
}); // было бы неплохо еще и ошибки как-то обрабатывать
$scope.add = function () {
myApi.add({...}).then(function (item) {
$scope.points.push(item);
});
}
});
// перед вызовом функции, переданной в $apply,
// приложение синхронизирует свое состояние
// Это позволяет гарантировать то, что в на момент вызова функции
// отработают все ватчеры и внесут возможные изменения
// Это эдакий безопасный способ
$scope.$apply(function () {
// chage scope
$scope.points = []; // меняем...
});
angular.module('app')
.factory('myApiClient', function ($http, $q) {
return {
save: function (data) {
return $http({
method: 'POST',
url: 'some_url',
data: data
}).then(function (response) {
if (!response.data || response.data.error) {
return $q.reject();
}
return response.data; // я не уверен надо ли вам это... сами решите
}, function () {
return $q.reject();
});
}
}
})
.controller('MyCtrl', function ($scope, myApiClient) {
$scope.save = function () {
myApiClient.save(...).then(function (data) {
$scope.showResponse = true;
}, function () {
$scope.showResponse = false;
})
}
});
angular.module('foo', [])
.directive('foo', function () {
return {
restrict: 'E',
controller: function ($scope) {
this.$childs = [];
this.appendChild = function (child) {
this.$childs.push(child);
}
}
}
})
.directive('bar', function () {
return {
restrict: 'E',
requires: '^foo', // говорит о том что директива должна быть вложена в другую
link: function (scope, el, attr, ctrl) {
ctrl.appendChild(el);
}
}
});