[Học AngularJS] - Bài 04 - $scope
$scope
là một đối tượng cầu nối lưu trữ dữ liệu, hay có thể hiểu nó là một kho dữ liệu và các đối tượng khác như Controller, Service sẽ sử dụng và trao đổi thông tin thông qua nó.
Ở bài trước tôi có nhắc là khi chúng ta khai báo một controller bên HTML thì bắt buộc phải khai báo với angular bằng javascript nữa. Thứ hai là một ứng dụng có thể có nhiều controller, các bạn lưu ý điểm này để viết chương trình bị lỗi còn biết đường sửa nhé.
# Khai báo data $sope trong controller
File index.html
Bài viết này được đăng tại [free tuts .net]
<body ng-app="myApp"> <div ng-controller="Controller1"> </div> <div ng-controller="Controller2"> </div> </body>
File app.js
myApp = angular.module('myApp', []); myApp.controller("Controller1", function($scope){ $scope.message = 'Chào mừng các bạn đến với freetuts.net'; }); myApp.controller("Controller2", function($scope){ $scope.message = 'Học lập trình online freetuts.net'; });
# Sử dụng data của $scope
Bây giờ ta sử dụng hai giá trị message của $scope
trong 2 controller trong view.
File index.html
<body ng-app="myApp"> <div ng-controller="Controller1"> {{message}} </div> <div ng-controller="Controller2"> {{message}} </div> </body>
Chạy lên các bạn sẽ thấy hai dòng dữ liệu xuất hiện.
# Sử dụng ng-model với $scope
Bây giờ bạn chỉnh file index.html một chút xíu như sau:
File index.html
<body ng-app="myApp"> <div ng-controller="Controller1"> <input type="text" ng-model="message"/> {{message}} </div> <div ng-controller="Controller2"> <input type="text" ng-model="message"/> {{message}} </div> </body>
Chạy lên và bạn nhập dữ liệu vào 2 ô input bạn sẽ thấy nó tự động xuất hiện trên màn hình. Lý do là directive ng-model
sẽ gán dữ liệu qua $scope.message
nên cú pháp {{message}}
sẽ in giá trị của $scope.message
(message là tên của model)
# Summary
Từ ví dụ trên ta có kết luận như sau:
- Mỗi controller sẽ có một
$scope
riêng biệt - Trong view của mỗi controller có thể sử dụng giá trị của $scope thông qua cú pháp
{{tên gía trị}}
Trong thực tế giữa hai controller có thể trao đổi data với nhau và chúng ta sẽ tìm hiểu chủ đề này sau nhé.