Tôi đã cố gắng hiểu sự khác biệt giữa phạm vi bị cô lập và phạm vi kế thừa trong chỉ thị. Đây là một ví dụ tôi đã chuẩn bị để làm cho bản thân mình hiểu:Chỉ thị AngularJS - Phạm vi biệt lập và Phạm vi kế thừa
HTML
<div ng-controller="AppController">
<div my-directive>
Inside isolated scope directive: {{myProperty}}
</div>
<div my-inherit-scope-directive>
Inside inherited scope directive: {{myProperty}}
</div>
</div>
Các JS
angular.module("myApp", [])
.directive("myInheritScopeDirective", function() {
return {
restrict: "A",
scope: true
};
})
.directive("myDirective", function() {
return {
restrict: "A",
scope: {}
};
})
.controller("AppController", ["$scope", function($scope) {
$scope.myProperty = "Understanding inherited and isolated scope";
}]);
Thực thi mã với góc-1.1.5, nó hoạt động như Tôi mong đợi: {{myProperty}} bên trong chỉ thị của tôi sẽ là undefined
vì phạm vi bị cô lập, trong khi chỉ thị phạm vi kế thừa của tôi, {{myProperty}} sẽ có giá trị Understanding inherited and isolated scope
.
Nhưng thực hiện với Angular-1.2.1, trong cả chỉ thị {{myProperty}} kết quả đầu ra Understanding inherited and isolated scope
.
Mọi thứ tôi bị thiếu?
Cảm ơn @Reto, sau đó là điểm của phạm vi phân lập trong v1.2, nếu nó thừa hưởng thuộc tính từ bộ điều khiển. –
Đó là về mẫu bên trong chỉ thị. Nếu bạn loại bỏ sự cô lập phạm vi từ 'myIsolatedDirective',' myProperty' sẽ bị ràng buộc với phạm vi điều khiển. Tôi nghĩ rằng hành vi trong 1.1.x không được dự định như Vojta đã nói: “Các phần tử con được xác định trong mẫu ứng dụng hoặc trong một số mẫu chỉ thị khác không nhận được phạm vi cô lập. Về lý thuyết, không ai nên dựa vào hành vi này, vì nó rất hiếm - trong hầu hết trường hợp, chỉ thị cô lập có một mẫu. ” –
Cảm ơn @Reto hoặc giải thích. –