2013-02-20 32 views
5

Tôi tìm thấy chủ đề này trong đó OP2 original fiddle trong đó phạm vi ng-include d không sửa đổi phạm vi gốc của nó.AngularJS: sửa đổi phạm vi cha mẹ trong ng-include

Một trong những gợi ý trả lời:

Nó là xấu xí và không thể đoán trước, vì vậy tôi khuyên bạn nên quấn dữ liệu của bạn trong một biến đối tượng: http://jsfiddle.net/e5rfP/3/

mà dường như để làm việc. Tại sao điều này?

+0

Xin xem http://stackoverflow.com/questions/14049480/what-are-the-nuances-of-scope-prototypal-prototypical-inheritance -in-angularjs/14049482 # 14049482 –

+0

Câu trả lời hay, Mark. – jogloran

Trả lời

8

Biến đối tượng hoạt động do cách thức hoạt động thừa kế của nguyên mẫu JavaScript. ngInclude tạo ra phạm vi con của riêng mình. Phạm vi con này được thừa hưởng nguyên mẫu từ phạm vi cha mẹ.

Trong JavaScript, khi chúng tôi viết một cái gì đó như $scope.x = 22 trong phạm vi con, điều này tạo ra thuộc tính x trên phạm vi $ con và gán giá trị 22 - chuỗi nguyên mẫu không được tham khảo ở đây, vì vậy phạm vi $ parent không thấy chuyện gì đã xảy ra.

Khi chúng tôi viết một cái gì đó như $scope.someObj.prop1 = 22 trên phạm vi con, nếu JavaScript không tìm thấy đối tượng someObj trên phạm vi $ con, nó tham khảo chuỗi nguyên mẫu và $ scope tiếp theo trong chuỗi là phạm vi $ parent. Nếu someObj tồn tại trên phạm vi $ parent, thì phạm vi $ parent được sửa đổi.

Như tôi đã đề cập trong một chú thích, sau SO câu hỏi và câu trả lời giải thích này chi tiết tất cả trong nhiều hơn nữa (với rất nhiều hình ảnh): What are the nuances of scope prototypal/prototypical inheritance in AngularJS?

0

Chỉ thị này sẽ bao gồm một phần mà không cần tạo một phạm vi mới. Ví dụ, bạn có thể tạo một biểu mẫu trong một phần và điều khiển biểu mẫu đó từ bộ điều khiển chính.

Đây là số link to the Repo mà tôi đã tạo cho nó.

tôi dựa trên câu trả lời của tôi this S.O. answer may mắn :-)

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