Я хочу создать таблицу, содержащую динамический контент. При нажатии на элемент информация должна отображаться в следующей строке. Так я creatied следующее:Angularjs добавляет элемент в DOM при нажатии
<table ng-controller="TestCtrl">
<tr ng-repeat-start="word in ['A', 'B', 'C']">
<td><!-- Some Information, Image etc --></td>
<td ng-click="showDetails(word)">{{word}}</td>
</tr>
<!-- This is only visible if necessary -->
<tr ng-repeat-end ng-show="currentDetail == word">
<td colspan="2" ng-attr-id="{{'Details' + word}}"></td>
</tr>
</table>
И у меня есть следующий JS код:
angular.module('maApp', []).controller("TestCtrl", function($scope, $document, $compile){
$scope.showDetails = function(word){
var target = $document.find("Details" + word);
//I checked it - target is NOT null here
//target.html("<div>Test</div>");
//target.append("<div>Test</div>");
var el = $compile("<div>Test</div>")($scope);
target.append(el);
//Show tr
$scope.currentDetail = word;
};
});
Я также попытался закомментированные решения выше, но ничего из этого не работает (ВУ показывает вверх, однако). Я думаю, что что-то не так с $document.find("Details" + word)
, но я не знаю что.
В конечном счете, я хочу добавить , а источник будет содержать word
.
Кто-нибудь видит, что я делаю неправильно здесь?
Большое спасибо за ваш ответ. Я знаю, что могу это сделать, но у меня есть одна проблема с этим ... (Вот почему я написал, что хочу добавить 'iframes'). Когда я делаю это так, у меня есть варианты iframes на моем веб-сайте, и он становится невосприимчивым ... –
Если вы беспокоитесь о производительности, вероятно, вы должны использовать 'ng-if' вместо' ng-show'. С 'ng-if' связанные элементы не существуют в DOM, пока выражение не примет значение' true', по сравнению с 'ng-show', где оно просто использует CSS show/hide. Таким образом, только один iframe должен существовать одновременно с 'ng-if'. Код почти такой же, как и в предыдущем примере. http://jsfiddle.net/HB7LU/20075/ – Fissio
Спасибо за хорошее Пояснение - +1 !! Он работает сейчас –