2015-01-14 19 views
6

Tôi đã đọc qua bài viết này:Bộ điều khiển có thể được thay thế hoàn toàn bằng chức năng liên kết trong chỉ thị không?

http://teropa.info/blog/2014/10/24/how-ive-improved-my-angular-apps-by-banning-ng-controller.html

Những đề xuất rằng bộ điều khiển được tích hợp vào chỉ thị như thế này để loại bỏ sự cần thiết phải bao giờ sử dụng ng-điều khiển:

angular.module('contestantEditor', []) 
    .directive('cContestantEditorForm', function() { 
    return { 
     scope: { 
     contestants: '=' 
     }, 
     templateUrl: 'contestant_editor.html', 
     replace: true, 
     controller: 'ContestantEditorFormCtrl', 
     controllerAs: 'ctrl', 
     bindToController: true 
    }; 
    }) 
    .controller('ContestantEditorFormCtrl', function($scope) { 

    this.contestant = {}; 

    this.save = function() { 
     this.contestants.push(this.contestant); 
     this.contestant = {}; 
    }; 

    }); 

Trong nhận xét, tuy nhiên, ai đó đã đề xuất giải pháp này:

angular.module('contestantEditor', []) 
    .directive('cContestantEditorForm', function() { 
    return { 
     scope: { 
     contestants: '=' 
     }, 
     templateUrl: 'contestant_editor.html', 
     replace: true, 
     link: function (scope) { 
     scope.contestant = {}; 

     scope.save = function() { 
      scope.contestants.push(scope.contestant); 
      scope.contestant = {}; 
     }; 
     } 
    }; 
    }); 

Nó đạt được t ông chính xác giống như phiên bản với bộ điều khiển mà không bao giờ cần phải thực hiện một bộ điều khiển. Vì vậy, tôi tò mò như những gì ưu và khuyết điểm của một trong hai phương pháp là so với bằng văn bản góc truyền thống với ng-điều khiển, và cho dù bộ điều khiển thậm chí còn cần thiết vào cuối của nó.

Here là người thay thế cho người đầu tiên và here là người thứ hai.

Trả lời

-1

Chỉ thị và Bộ điều khiển là hai điều hoàn toàn khác nhau.

Direvtives nên được sử dụng cho các thao tác DOM.

nếu bạn muốn biết sử dụng bộ điều khiển bên trong DDO hoặc sử dụng chức năng liên kết cho logic của bạn, thì câu trả lời sẽ là bạn nên sử dụng bộ điều khiển trong DDO trong trường hợp đó. API trong chỉ thị mở rộng


Bộ xử lý không thể được thay thế bằng chỉ thị

điều khiển nên chứa logic doanh nghiệp của bạn và nó không thể được thay thế bằng chỉ thị và không cần phải thao tác DOM.

+0

Về "bộ điều khiển không thể thay thế bằng chỉ thị", bạn đã đọc bài viết chưa? Họ đã không loại bỏ các bộ điều khiển, mà đúng hơn là tích hợp chúng vào các chỉ thị của họ. Nó hoạt động gần như giống hệt như bình thường, nhưng loại bỏ sự cần thiết cho ng-controller hoặc thậm chí có một phạm vi thông qua thuộc tính "bindToController". Bạn có thể sửa đổi câu trả lời của bạn để nó cụ thể hơn địa chỉ tích hợp bộ điều khiển vào chỉ thị? – m0meni

+0

Không, nhưng tôi sẽ, có phần thứ hai về điều đó –

4

Trong chỉ thị, bạn nên sử dụng chức năng liên kết bất cứ khi nào bạn có thể. Chỉ sử dụng các bộ điều khiển khi cần liên lạc với các chỉ thị khác.

Bạn có thể tìm thêm thông tin về cuộc thảo luận này here. Cụ này tuyên bố thực hành tốt nhất:

Thực hành tốt nhất: sử dụng khiển khi bạn muốn để lộ một API để chỉ thị khác. Nếu không, hãy sử dụng liên kết.

+1

lý do tại sao downvote này? – JobaDiniz

Các vấn đề liên quan