ディレクティブの属性として渡される変数に基づいて要素のHTMLを変更しようとしています。ディレクティブを介して要素のHTMLを動的に変更する
コンテンツは「This is the original content ...」に戻っているはずです。どのように動作しませんか?
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 value)
という1つの変数を渡すのではなく、(passed by reference)
です。
私はもっとうまくしようとしているものを説明するために、再びjsFiddleを更新:
https://jsfiddle.net/4xbLrg5e/6/
チェック更新答えているではありません –