Trong khi tôi đang cố xác định một số thuộc tính phạm vi cục bộ, tôi thấy rằng các thuộc tính được xác định bằng '@' không thể truy cập trực tiếp trong hàm liên kết trong khi đó không phải trường hợp đối tượng quy định với '=' hoặc '&'Góc: không thể truy cập thuộc tính phạm vi cục bộ được xác định bằng '@' từ chức năng liên kết
Dưới đây là các chỉ thị đơn giản tôi đã viết (jsfiddle):
angular.module('test', [])
.controller('testCtrl', function($scope) {
$scope.count1 = 5;
})
.directive('testDir', function() {
return {
restrict: 'A',
scope: {
count: '=',
readonly: '@'
},
link: function (scope, elem, attrs) {
console.log('Outside has count? '+('count' in scope));
console.log('Outside has readonly? '+('readonly' in scope));
scope.$watch('count', function(value){
console.log('Inside has count? '+('count' in scope));
console.log('Inside has readonly? '+('readonly' in scope));
elem.text(value);
});
}
};
});
Đầu ra là:
Bên ngoài có 'đếm'? true
Bên ngoài có 'chỉ đọc'? false
Bên trong có 'đếm'? true
Bên trong có 'chỉ đọc'? true
Tôi không biết tại sao scope.readonly (@) không được định nghĩa bên ngoài phạm vi. $ chức năng đồng hồ trong khi nó không phải là trường hợp cho scope.count (=)?