Tôi là một người dùng mới của AngularJS và tôi gặp khó khăn khi tôi phải truy cập vào một biến trong một bộ điều khiển từ một chỉ thị bên trong một ng-lặp lại. Tôi nghĩ rằng nó phải là một cái gì đó liên quan đến phạm vi.Làm thế nào để truy cập vào phạm vi điều khiển từ một chỉ thị bên trong ng-lặp lại?
Dưới đây là fiddle tôi: http://jsfiddle.net/Zzb58/1/
Phạm vi 'MyCtrl' có hai thuộc tính: "items", một mảng, và "điều", chỉ là một chuỗi.
function MyCtrl($scope) {
$scope.items = [{id: 'item1'}, {id: 'item2'}];
$scope.thing = "thing";
}
Vì vậy, nếu tôi có thể tạo một chỉ và tôi muốn nó để đọc nội dung của mảng, chương trình này hoạt động hoàn hảo:
<div my-directive ng-repeat="item in items" item='item'></div>
app.directive('myDirective', function() {
return {
restrict: 'AE',
scope: {
item: '=item',
},
template: '<div>{{ item.id }}</div>'
}
});
HTML được làm mới đúng.
Nhưng nếu tôi cố gắng truy cập biến "điều" từ chỉ thị, nó luôn được đọc là "không xác định".
app.directive('myDirective', function() {
return {
restrict: 'AE',
scope: {
item: '=item',
thing: '='
},
template: '<div>{{ item.id }} - Here is not the {{thing}}</div>'
}
});
Tôi nghĩ rằng vấn đề phải liên quan đến phạm vi con được tạo trong ng-lặp lại hoặc có thể biến không bị ràng buộc chính xác.
Tuy nhiên, nếu tôi sử dụng $ parent.thing trong mẫu, biến được đọc và được đánh giá đúng, nhưng tôi không biết liệu $ parent đó là phạm vi ng-lặp lại hay 'MyCtrl'.
1) Tôi đang làm gì sai?
2) Tại sao cần phải đặt phần tử "mục" đọc trong ng-lặp lại làm thuộc tính của phần tử HTML? Đầu tiên tôi nghĩ "các mục" nằm trong phạm vi cha mẹ, vì vậy khi phạm vi cô lập của chỉ thị được tạo, tôi sẽ chỉ phải làm một cái gì đó như "items: '='".
Nếu bạn sử dụng '=' thì bạn phải chuyển thuộc tính như vậy 'điều =" điều "'. – elclanrs