- controllerAs Xem Cú pháp: Sử dụng các controllerAs cú pháp trên bộ điều khiển cổ điển với cú pháp phạm vi $.
Tại sao ?: Bộ điều khiển được tạo, "mới" và cung cấp một cá thể mới và cú pháp controllerAs gần với cú pháp của hàm tạo JavaScript so với cú pháp $ scope cổ điển.
Tại sao ?: Nó khuyến khích sử dụng ràng buộc đối tượng "chấm" trong Chế độ xem (ví dụ: customer.name thay vì tên), theo ngữ cảnh, dễ đọc hơn và tránh mọi sự cố tham chiếu có thể xảy ra mà không có "nằm rải rác".
Tại sao ?: Giúp tránh sử dụng $ cuộc gọi mẹ trong lần xem với bộ điều khiển lồng nhau.
<!-- avoid -->
<div ng-controller="Customer">
{{ name }}
</div>
<!-- recommended -->
<div ng-controller="Customer as customer">
{{ customer.name }}
</div>
- controllerAs khiển Cú pháp: Sử dụng các cú pháp controllerAs trên bộ điều khiển cổ điển với cú pháp $ phạm vi.
Cú pháp controllerAs sử dụng này điều khiển bên trong mà được ràng buộc với $ phạm vi
Tại sao ?: controllerAs là đường cú pháp trên $ phạm vi. Bạn vẫn có thể liên kết với phương thức Xem và vẫn truy cập phạm vi $.
Tại sao ?: Giúp tránh sự cám dỗ của việc sử dụng các phương pháp phạm vi $ trong bộ điều khiển khi có thể tốt hơn để tránh hoặc di chuyển chúng đến nhà máy. Xem xét sử dụng phạm vi $ trong một nhà máy, hoặc nếu trong một bộ điều khiển chỉ khi cần thiết. Ví dụ: khi xuất bản và đăng ký sự kiện bằng cách sử dụng $ emit, $ broadcast hoặc $ trên việc xem xét di chuyển các mục đích sử dụng này đến nhà máy và gọi từ bộ điều khiển.
/* avoid */
function Customer ($scope) {
$scope.name = {};
$scope.sendMessage = function() { };
}
/* recommended - but see next section */
function Customer() {
this.name = {};
this.sendMessage = function() { };
}
- controllerAs với vm: Sử dụng một biến chụp cho điều này khi sử dụng cú pháp controllerAs. Chọn một tên biến nhất quán như vm, viết tắt của ViewModel.
Tại sao ?: Từ khóa này theo ngữ cảnh và khi được sử dụng trong một hàm bên trong bộ điều khiển có thể thay đổi ngữ cảnh của nó. Nắm bắt bối cảnh của điều này tránh gặp phải vấn đề này.
/* avoid */
function Customer() {
this.name = {};
this.sendMessage = function() { };
}
/* recommended */
function Customer() {
var vm = this;
vm.name = {};
vm.sendMessage = function() { };
}
Lưu ý: Bạn có thể tránh bất kỳ cảnh báo jshint nào bằng cách đặt nhận xét bên dưới dòng mã. /* jshint validthis: true / var vm = this; Lưu ý: Khi tạo đồng hồ trong bộ điều khiển bằng bộ điều khiển, bạn có thể xem vm. thành viên sử dụng cú pháp sau. (Tạo đồng hồ một cách thận trọng khi họ thêm tải hơn để chu kỳ tiêu hóa.)
$scope.$watch('vm.title', function(current, original) {
$log.info('vm.title was %s', original);
$log.info('vm.title is now %s', current);
});
https://github.com/johnpapa/angularjs-styleguide#controllers
Bạn có lẽ nên đọc về cách thức hoạt động của Angular với '$ scope'. Đó là cách được khuyến nghị để liên kết với giao diện người dùng. Đối với một, mà không có '$ scope' bạn sẽ không' $ xem' và do đó tôi sẽ không mong đợi 2-cách ràng buộc để làm việc. Ngoài ra, đoạn trích của bạn dường như đã chạy cho tôi. –
Vui lòng xem bài đăng và video này https://thinkster.io/egghead/experimental-controller-as-syntax/ – Chandermani
Mã này đang hoạt động. –