Những gì bạn đang cố gắng làm là theo dõi thuộc tính của thuộc tính trong chỉ thị. Bạn có thể xem thuộc tính của các thay đổi thuộc tính bằng cách sử dụng $ quan sát () như sau:
angular.module('myApp').directive('conversation', function() {
return {
restrict: 'E',
replace: true,
compile: function(tElement, attr) {
attr.$observe('typeId', function(data) {
console.log("Updated data ", data);
}, true);
}
};
});
Hãy nhớ rằng tôi đã sử dụng chức năng 'biên dịch' trong chỉ thị ở đây vì bạn chưa đề cập đến việc bạn có bất kỳ mô hình nào hay không và chức năng này có nhạy cảm về hiệu suất hay không.
Nếu bạn có mô hình, bạn cần thay đổi chức năng ' biên dịch ' thành ' liên kết ' hoặc sử dụng ' bộ điều khiển ' và để theo dõi các thay đổi thuộc tính của mô hình, bạn nên sử dụng $ watch () và sử dụng góc cạnh {{}} dấu ngoặc từ thuộc tính, ví dụ:
<conversation style="height:300px" type="convo" type-id="some_prop"></conversation>
Và trong chỉ thị:
angular.module('myApp').directive('conversation', function() {
return {
scope: {
typeId: '=',
},
link: function(scope, elm, attr) {
scope.$watch('typeId', function(newValue, oldValue) {
if (newValue !== oldValue) {
console.log("I got the new value! ", newValue);
}
}, true);
}
};
});
=
inscope:
sẽ tạo ra một ràng buộc hai chiều, tức là các thay đổi trong phạm vi con truyền đến phạm vi cha và ngược lại - đây không phải là trường hợp? Tôi cần có thể ra lệnh cập nhật chính nó từ bộ điều khiển mẹ.