Tôi muốn sử dụng tùy chọn 'controllerAs' trong các chỉ thị của mình. Hãy để tôi trích dẫn lý do từ "An AngularJS Style Guide for Closure Users at Google":"controller as" vs isolate scope
Tại sao? Đặt các phương thức và thuộc tính trực tiếp vào bộ điều khiển, thay vì xây dựng một đối tượng phạm vi, phù hợp hơn với phong cách lớp đóng cửa của Google . Ngoài ra, sử dụng 'bộ điều khiển dưới dạng' làm cho nó hiển thị bộ điều khiển nào bạn đang truy cập khi nhiều bộ điều khiển áp dụng cho một phần tử. Vì luôn có dấu '.' trong các ràng buộc, bạn không phải lo lắng về nguyên mẫu mặt nạ thừa kế prototypal.
Nhưng tôi có thể thấy vấn đề khi sử dụng cách tiếp cận này nếu chỉ thị đã tách biệt ràng buộc phạm vi.
angular.module('cmw').directive('fooWidget', function() {
return {
controller: function() {
this.qux = '123';
},
controllerAs: 'fooWidget',
scope: {
bar: '='
},
template: ' {{fooWidget.qux}} {{bar}} '
};
});
Trong trường hợp này, tài sản bar
được gắn vào phạm vi, không để bộ điều khiển, mà kết quả trong một tình huống mâu thuẫn khó hiểu nơi các thuộc tính khác nhau nên được xem xét tại nhiều nơi khác nhau. Cách được đề xuất 'chính thức' để giải quyết vấn đề này là gì?
CẬP NHẬT: xem GitHub issue về việc này.