NY** project를 리뷰하려고 이전 메일을 찾아보던 중에, project 진행 간 인상적이었던 부분들을 정리했던 내용이 있어 다시 한 번 공유합니다.
abstract class를 상속(inherits)하여 구현하는 예제입니다.
Controller 생성자에 $controller를 전달한 뒤 하이라이트 코드와 같은 형태로 상속이 가능합니다.
$scope를 injecting하기 위해서 두 번째 param를 전달합니다.
이를 이용하면 duplicate code between controllers 문제를 풀 수 있습니다.
'use strict';
angular.module('Diary')
// base controller containing common functions for add/edit controllers
.controller('Diary.BaseAddEditController',
['$scope', 'DiaryService',
function ($scope, DiaryService) {
$scope.diaryEntry = {};
$scope.saveDiaryEntry = function () {
DiaryService.SaveDiaryEntry($scope.diaryEntry);
};
// add any other shared functionality here.
}])
.controller('Diary.AddDiaryController',
['$scope', '$controller',
function ($scope, $controller) {
// instantiate base controller
$controller('Diary.BaseAddEditController', { $scope: $scope });
}])
.controller('Diary.EditDiaryController',
['$scope', '$routeParams', 'DiaryService', '$controller',
function ($scope, $routeParams, DiaryService, $controller) {
// instantiate base controller
$controller('Diary.BaseAddEditController', { $scope: $scope });
DiaryService.GetDiaryEntry($routeParams.id).success(function (data) {
$scope.diaryEntry = data;
});
}]);
Reference
http://jasonwatmore.com/post/2014/03/25/angularjs-a-better-way-to-implement-a-base-controller
'Javascript' 카테고리의 다른 글
Ionic 2 Unit test (0) | 2017.07.31 |
---|---|
Service workers. (0) | 2017.07.06 |
npm lite-server (0) | 2017.07.06 |
Calculate distance between two geolocations. (1) | 2017.06.28 |