Angular 컨트롤러

Posted by 단순대왕 Angular.js : 2014. 9. 12. 15:25

컨트롤러

Knockout 라이브러리가 웹 페이지 전체에 바인딩했던 것과 다르게 Angular.js 라이브러리는

컨트롤러 단위로 바인딩합니다.

특정 공간 분할 태그에 ng-controller 속성을 부여하고 해당 속성 값과 같은 이름의 함수를 생성합니다.

예)

function basicController($scope){    // 반드시 매개변수로 $scope 식별자를 사용해야 합니다.

$scope.title = 'Students List';

$scope.students = [{ ... }, { ... }];

$scope.getAverage = function(){

var output = 0;

for(var i=0; i<$scope.students.length; i++){

output += $scope.students[i].score;

}

return output / $scope.students.length;

};

}

<div ng-controller="basicController">

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

</div>


모델과 컬렉션

Angular.js 라이브러리는 모델과 컬렉션을 위한 별도의 생성자 함수를 제공하지 않습니다.

변수 $scope의 속성으로 지정하기만 하면 모델 바인딩과 컬렉션 바인딩이 자동으로 수행됩니다.

<div ng-controller="basicController">

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

<table>

<tr ng-repeat="student in students">

<td>{{ student.id }}</td>

<td>{{ student.name }}</td>

<td><input type="number" ng-model="student.score" /></td>

</tr>

</table>

</div>


메서드

Angular.js 라이브러리는 템플릿에서 함수를 실행해 함수를 실행해 결과를 출력합니다.

예)

<div ng-controller="basicController">

<h3>Average : {{ getAverage() }}</h3>

</div>

function basicController($scope){

$scope.getAverage = function(){

var output = 0;

for(var i=0; i<$scope.students.length; i++){

output += $scope.students[i].score;

}

return output / $scope.students.length;

};

}


이벤트

예)

<div ng-controller="basicController">

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

<form ng-submit="submit()">    // submit 이벤트 연결

<input ng-model="name" type="text">

<input type="submit" value="ADD" />

</form>

</div>

function basicController($scope){

$scope.submit = function(){

$scope.students.push({

id: $scope.students.length + 1,

name: $scope.name,

score: 0.0

});

$scope.name = '';

};

}

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

angular example  (0) 2014.09.15
Angular 서비스  (0) 2014.09.15
Angular 페이지 라우트  (0) 2014.09.15
Angular ng 속성  (0) 2014.09.12
Angular 설정  (0) 2014.09.12