在angular指令中向transcluded内容添加内容

时间:2014-07-27 16:17:57

标签: angularjs angularjs-directive angularjs-ng-repeat

我正在尝试将内容添加到我的指令中的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) 

提前致谢!

1 个答案:

答案 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);
});