06/04/2021, 14:48

[Học AngularJS] - Bài 04 - $scope - AngularJS căn bản

$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 ...

$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

<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 Zaidap.com.net';
});

myApp.controller("Controller2", function($scope){
    $scope.message = 'Học lập trình online Zaidap.com.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é.

Vũ Văn Thanh

12 chủ đề

2597 bài viết

Cùng chủ đề
0