В angularJs У меня есть куча контроллеров с некоторым Funktions они же:угловых расширяющих методы контроллера
angular.module('myApp').controller(...){
function lockForm(id){
...
}
function releaseForm(id){
...
}
function dbError(e){
...
}
// and some other little stuff again and again in every controller
}
примеры, которые я прочитал все основано на расширение (Смешение) материала от $ объема и @this , Разве нет способа расширить весь контроллер, как есть?
С благодарностью Shushanth Pallegar Я решил свою проблему. Это не совсем то, что я хотел, но лучше, чем раньше.
// base ctrl
angular.module('myApp').controller('baseViewCtrl', function ($scope, viewData) {
this.lockForm = function() {
viewData.isLoading = true;
};
// ... and others
});
// child ctrl
angular.module('myApp').controller('childCtrl', function ($scope) {
var viewData = {
// some stuff
};
// inject from basecontroller
angular.extend(this, $controller('baseViewCtrl', {$scope: $scope, viewData: viewData}));
// link $scope
$scope.viewData = viewData;
$scope.onSelectUnit = onSelectUnit;
// child controller methods
function onSelectUnit(){
this.lockForm();
...
}
});
Это выглядит немного уродливой на всех, потому что я избегал @this почти везде
Возможно, я идти по этому пути и использовать базу вместо @this, чтобы сделать его более ясным, что впрыскивают методы:
// child ctrl
angular.module('myApp').controller('childCtrl', function ($scope) {
var viewData = {
// some stuff
};
// inject from basecontroller
var base = $controller('baseViewCtrl', {$scope: $scope, viewData: viewData});
// link $scope
$scope.viewData = viewData;
$scope.onSelectUnit = onSelectUnit;
// child controller methods
function onSelectUnit(){
base.lockForm();
...
}
Put общие функции службы и ввести услугу. Контроллеры должны быть очень тонкими. Бизнес-логика принадлежит сервисам – charlietfl
Вы можете использовать концепцию родительского контроллера и дочернего контроллера. Кроме того, вы можете использовать функцию service/factory. – Sarju