Angular 바인딩/ 팩토리

Posted by 단순대왕 Angular.js : 2014. 9. 15. 18:00

Angular.js 라이브러리는 특별한 일이 있을 때만 데이터와 뷰를 바인딩합니다.

예를 들어 속성으로 연결한 이벤트를 실행하거나 $http 서비스를 만드는데 데이터와 뷰를 바인딩합니다.


강제로 바인딩하고 싶다면 $scope 객체의 $apply() 메서드를 사용합니다.

예)

setInterval(function(){ 

$scope.title += "+";

$scope.$apply();

}, 1000);


팩토리

Angular.js 라이브러리는 팩토리 기능을 사용해 개발자가 직접 서비스를 만들 수 있습니다.

서비스를 만들어 사용하면 코드를 모듈로 분리해서 사용하므로 재사용성이 좋아지고 본문 코드가 

간단해집니다.

<html ng-app="basic">

<script>

// 모듈을 생성합니다.

var basic_module = angular.module('basic', []);

// 서비스를 생성합니다.

/*

basic 모듈을 여기서 생성한다. 

-> 컨트롤러는 모듈에 포함된다. 

-> 컨트롤러에서는 생성된 서비스를 사용한다.

*/

basic_module.factory('$custom', function ($rootScope) {

// 클로저로 은닉 변수를 만듭니다.

var timerId = null;

// 리턴합니다.

return {

startTimer: function (callback, interval) {

timerId = setInterval(function () {

callback();

$rootScope.$apply();

}, interval);

},

stopTimer: function () {

clearInterval(timerId);

timerId = null;

}

};

});

</script>

<script>

basic_module= angule.module(); -> 모듈을 여기서 생성하면 서비스(Factory)를 생성하지 못한다.

// 컨트롤러를 생성합니다.

basic_module.controller('basicController', function ($scope, $custom) {

// 변수를 입력합니다.   

$scope.title = 'Factory';

// 타이머를 연결합니다.

$custom.startTimer(function () {

$scope.title += '+';

}, 1000);

});

</script>

<div ng-controller="basicController">

<h1>{{ title }}</h1>

</div>

'Angular.js' 카테고리의 다른 글

Angular 사용자 정의 속성  (1) 2014.09.17
angular example  (0) 2014.09.15
Angular 서비스  (0) 2014.09.15
Angular 페이지 라우트  (0) 2014.09.15
Angular ng 속성  (0) 2014.09.12