我正在尝试将内容添加到我的指令中的transcluded html中。虽然它在视觉上有效,但控制台却给我一个错误,我不知道如何修复它。
这是一个显示问题的傻瓜:http://plnkr.co/edit/HQHRisu9QZZ0GHBdAEl4?p=preview
app.js第39行主要是我正在尝试做的并导致错误:
children.prepend('<td><input type="checkbox" /></td>');
在控制台输出中,有:
TypeError: Cannot set property 'nodeValue' of undefined
at Object.interpolateFnWatchAction [as fn] (https://code.angularjs.org/1.2.20/angular.js:6913:37)
at Scope.$digest (https://code.angularjs.org/1.2.20/angular.js:12447:29)
at Scope.$apply (https://code.angularjs.org/1.2.20/angular.js:12712:24)
at done (https://code.angularjs.org/1.2.20/angular.js:8315:45)
at completeRequest (https://code.angularjs.org/1.2.20/angular.js:8527:7)
at XMLHttpRequest.xhr.onreadystatechange (https://code.angularjs.org/1.2.20/angular.js:8466:11)
提前致谢!
答案 0 :(得分:2)
我弄清楚问题是什么。在这里发布答案以防万一。
原始代码:
var tbody = transclude(function(clone) {
var children = clone.children('tr');
children.attr('ng-repeat', 'item in data');
children.prepend('<td><input type="checkbox" /></td>');
});
$compile(tbody)($scope.$parent, function(clone) {
$element.append(clone);
});
固定代码:
我不得不在转码中修改html,而是必须使用jquery来添加html。
var tbody = transclude(function(clone) {
var children = clone.children('tr');
children.attr('ng-repeat', 'item in data');
});
$(tbody[1]).find('tr').prepend('<td><input type="checkbox" /></td>');
$compile(tbody)($scope.$parent, function(clone) {
$element.append(clone);
});