我創建了一個簡單的指令,用於在沒有表格數據(即「找不到結果」)佔用整個頁面時在<td>
中顯示一些文本桌子的一排。在我剛剛在<td>
中使用靜態文本之前,現在我想能夠將任何DOM放入其中。我嘗試將ng-transclude
添加到我的指令中,但現在它以一種奇怪的方式呈現元素。使用ng-transclude在表格中似乎效果不好
這裏是我的指令:
app.directive('skNoResult', ['$rootScope', function() {
return {
restrict: 'A',
replace: true,
transclude: true,
template: '<tr ng-if="!hasResult"><td class="left" colspan="{{ colSpan }}"><ng-transclude></ng-transclude></td></tr>',
link: function (scope, elem, attrs, ctrl) {
var span = angular.element(elem).parents('tbody').siblings('thead').find('tr').children().length;
scope.colSpan = span;
scope.$watch(attrs.skNoResult, function (list) {
if (list.length) {
scope.hasResult = true;
} else {
scope.hasResult = false;
}
});
}
};
}]);
它基本上只是跟蹤數據集(陣列),並檢查長度,看看是否有任何數據或沒有。如果有的話,我們用ngIf
顯示這一行。
我的HTML看起來就像這樣
<tr sk-no-result="model.dataSet">Here is my text I want to transclude into my directive</tr>
的問題是,transcluded文本被插入到DOM只是一個textNode,並出現在<table>
上面,而不是在它的內部。任何想法爲什麼發生這種情況?
哦,你是對的......它不喜歡在這種情況下使用表格內的元素標籤。我只需要將它用作屬性 – 2014-09-26 00:26:22
一旦你知道如何:P 謝謝。 – Kieran 2017-04-03 00:43:22