2013-09-21 19 views
13

Tôi đang cố gắng đưa một số dữ liệu vào phạm vi mà chỉ thị của tôi tạo ra. Đây là số jsFiddle của tôi.điều khiển angularjs trong chỉ thị bằng cách sử dụng controllerAs không thể làm việc?

đoạn mã sau hoạt động tốt

.directive('directive1', function() { 
    return: { 
     scope: true, 
     controller: function ($scope) { 
      $scope.name = 'world'; 
     } 
    } 
}) 

<div directive1> 
    <p>{{ name }}</p> 
</div> 

nhưng các mã không làm việc

.directive('directive2', function() { 
    return: { 
     scope: true, 
     controller: function() { 
      this.name = 'world'; 
     }, 
     controllerAs: 'testCtrl' 
    } 
}) 

<div directive2> 
    <p>{{ testCtrl.name }}</p> 
</div> 

Có gì không ổn trong mã của tôi? hoặc tôi đã hiểu nhầm điều gì đó về controllerAs?

+0

Tôi không biết nếu bạn có thể làm điều đó. Bạn đã định nghĩa bộ điều khiển không có '$ scope'. 'ControllerAs' là gì? –

+1

@MaximShoustin [docs angular1.2] (http://docs.angularjs.org/guide/directive), một tính năng mới cho thị – user2331095

+1

Thông tin cần biết :) –

Trả lời

16

Bộ điều khiểnNhận hỗ trợ cho chỉ thị was added in 1.2.0, vì vậy bạn sẽ phải sử dụng phiên bản mới nhất, thay vì 1.0.2 từ fiddle được liên kết. This way nó hoạt động như bạn muốn.

+0

Bạn đang đúng. Sau khi di chuyển đến góc 1,2, nó hoạt động tốt. cảm ơn ~! – user2331095

-1

Xin đừng nhầm lẫn với bộ điều khiển chỉ thị và một bộ điều khiển bình thường! Vì vậy, yea, một directve có thể có một bộ điều khiển, điều khiển một cái gì đó. Nhưng nó không tương đương với một bộ điều khiển bình thường!

Có không thực sự là một vấn đề để đặt logic chỉ vào bộ điều khiển chỉ thị, nhưng bộ điều khiển chỉ thị trên thực tế, được sử dụng để liên lạc chỉ thị chéo. Một thể hiện điều khiển của một chỉ thị có thể được đưa vào một chỉ thị khác nằm trên cùng một phần tử (hoặc các phần tử con).

Các "điều khiển là" biểu hiện là dành cho bộ điều khiển bình thường. Vì vậy, chỉ cần làm của bạn một ưu và đặt logic của bạn vào chức năng liên kết chỉ thị.

+0

Cảm ơn các chi tiết của bộ điều khiển! Trên thực tế tôi đang bối rối với một bộ điều khiển bình thường và bộ điều khiển chỉ thị. Cảm ơn một lần nữa! – user2331095

+13

Câu trả lời này là sai lầm - một bộ điều khiển chỉ thị ** là ** giống như một bộ điều khiển bình thường, ngoại trừ việc thay vì được khởi tạo bởi các 'chỉ thị ngController', nó khởi tạo bởi các chỉ thị bạn liên kết nó với. Nó hoạt động giống nhau, injectables, 'controllerAs', mọi thứ. Logic có thể/nên đi trong bộ điều khiển của chỉ thị - chức năng liên kết chủ yếu nên được sử dụng cho thao tác DOM. –