Tôi mới sử dụng Angularjs và không hiểu quá nhiều về hậu trường. Về cơ bản, tôi muốn tạo chỉ thị kìm 'E', dựa trên dữ liệu trong bộ điều khiển tôi tạo động html, giống như toàn bộ bảng '' để thay thế chỉ thị.element.replaceWith trong liên kết chỉ thị tùy chỉnh chỉ hoạt động ở lần đầu tiên được gọi là
Các directve trong file html của tôi là như thế này:
<matrixrows></matrixrows>
đang chỉ thị của tôi là như thế này:
angular.module('matrix', [.....])
.directive('matrixrows', [..., function (...) {
return {
restrict: 'E',
replace: true,
require: '^matrix',
link: function (scope, element, attr, ctrl) {
.........
scope.$watch('currentPage', function (newValue, oldValue) {
if (newValue && newValue != oldValue) {
var html = "";
.......................
here is the code to generate the html
.......................
element.replaceWith(html);
}
});
}
}])
Qua xem currentPage thay đổi 's tôi tái html và thay thế thẻ chỉ thị. Khi lần đầu tiên tôi thay đổi 'currentPage', thành phần .replaceWith (html) hoạt động tốt. Sau đó, tôi thay đổi 'currentPage angin, chức năng xem sẽ được kích hoạt, nhưng yếu tố .replaceWith (html) sẽ không hoạt động.
Sau đó, tôi bước vào Angularjs mã nguồn, tôi thấy, sau khi lần đầu tiên thực hiện element.replaceWith của, element [0] .parentNode trở thành rỗng, điều này gây ra replaceWith sụp đổ.
Bất kỳ ai biết cách hoạt động?
Cảm ơn! Tôi đã thử điều này, nó không hoạt động. BTW, phần tử là từ tham số của liên kết, được truyền vào bởi angularjs. – Gisway
Ahh .. Tôi nhận thấy sau khi đọc lại mã. Viết lại câu trả lời. Bạn có thử nó không? – Mithon
Ahh .. cũng .. nếu html của bạn chỉ là một chuỗi, điều này sẽ không hoạt động. Bạn cũng có thể làm một 'angular.element (html)' để lấy một đối tượng phần tử jQuery/jqLite. – Mithon