Я пытаюсь изменить HTML-элемент на основе переменной, передаваемой как атрибут директивы.Изменение динамического элемента HTML с помощью директивы
Содержимое должно быть изменено на «Это исходное содержимое ...». Почему это не работает?
HTML
<div ng-app="myApp" ng-controller="myCtrl">
<div data-loading-data='{{testObj}}'>
<p> This is the original content. changingVar is '{{testObj.changingVar}}'</p>
</div>
</div>
JS
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $timeout) {
$scope.testObj = {};
$scope.testObj.changingVar = false;
$timeout(function() {
console.log("time out is done ! the original content should be restored now (from somewhere inside the directive!)");
$scope.testObj.changingVar = true;
}, 5000);
});
app.directive('loadingData', function() {
return {
restrict: 'AE',
replace: 'false',
link: function(scope, elem, attrs) {
var originalHTML = elem[0].innerHTML;
elem.replaceWith("<p>This is modified content</p>");
// When testObj.changingVar will be true, I want the original content (which is stored in var 'originalHTML') to be set!
// How to do?
// ........................................... ?
// ........................................... ?
}
}
});
Первый ответ был полезен; извините, я случайно сохранил jsfiddle с некоторыми комментариями. Обновлено сейчас!
Был ответ, который предложил использовать объекты полезными (passed by reference)
вместо передачи одной переменной (passed by value)
- это было здорово знать.
Я обновил jsFiddle еще раз, чтобы проиллюстрировать то, что я пытаюсь сделать лучше:
https://jsfiddle.net/4xbLrg5e/6/
проверить обновленный ответ –