2015-02-03 16 views
8

Trong AngularJS có thể kế thừa phạm vi của bộ điều khiển chính từ bên trong một phần được bao gồm thay vì truyền dữ liệu qua dịch vụ được tiêm không?Thừa kế phạm vi của bộ điều khiển bên ngoài từ bên trong ng-include mà không có dịch vụ?

trường hợp Ví dụ:

Hãy nói rằng ParentCtrl 's phạm vi trông giống như: { testData: 'testing stuff' }

<div ng-controller="ParentCtrl"> 
    Here we're defined: {{testData}} 
    <div ng-include="'partial.html'"></div> 
</div> 

Và bên partial.html:

<em>Inherited: {{testData}}</em> 

Vì vậy, một phần thậm chí không cần nó điều khiển riêng cho điều này. Nếu điều này là không thể mặc dù và bạn chỉ có thể vượt qua tiêm dữ liệu giữa các bộ điều khiển thông qua một dịch vụ tại sao Angular đã làm những việc theo cách này?

Trả lời

5

Vâng, đó thực sự là cách hoạt động theo mặc định. ng-include luôn tạo phạm vi mới và:

Một "phạm vi con" (nguyên mẫu) kế thừa các thuộc tính từ phạm vi mẹ .

See the docs on Scope.

Here là một ví dụ plunker.

Chỉnh sửa: Ngoài ra, tôi vừa nhận thấy vấn đề cú pháp trong câu hỏi ban đầu của bạn. Mẫu nên được bao quanh trong dấu nháy đơn. Thay đổi <div ng-include="partial.html"></div> thành <div ng-include="'partial.html'"></div>

+0

Cảm ơn tôi đã cập nhật câu hỏi ban đầu! – saricden

0

Chơi xung quanh với ví dụ Plunkr trong ngInclude documentation, tôi có thể truy cập phạm vi của bộ điều khiển chính từ bên trong một phần. Ví dụ, thay đổi nội dung template1.html tới:

Content of template1.html {{ template }} 

mỗi tài liệu, ngInclude tạo ra một phạm vi mới, có nghĩa là bạn sẽ cần phải tuân thủ các thực hành tốt nhất của góc "có một dấu chấm trong phạm vi của bạn" (truy cập đối tượng trên phạm vi thay vì giá trị nguyên thủy), để tránh các vấn đề với tham chiếu bị hỏng. Bạn có thể xem this Stack Overflow question để biết thêm thông tin.

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