以前にこれが発生したことは知っていますが、正確にはこの方法ではなく、必要な変更を行うのに問題があります。
ギャラリーの一部として、最初は空で非表示の div があります。画像をクリックすると、div に入力されて表示されます。画像/コンテンツに加えて、いくつかのナビゲーション要素もあります。つまり、角度を再コンパイルする必要があるため、これらも動的に生成され、機能しません。移入する関数は次のとおりです。
$scope.picturePop = function(picID){
match = $.grep($scope.gallery, function(obj) { return obj.id == picID; });
pic = match[0].image;
title = match[0].title;
desc = match[0].desc;
closediv = "<div id=\"divClose\" class=\"floatRight\" ng-click=\"closeParent();\">Close</div>";
navDiv = "";
if(picID > 1){
prev = picID - 1;
navDiv += "<div id=\"picNav\" ng-click=\"picturePop(" + prev + ")\">Previous</div>";
}
if(picID < $scope.picCount){
next = picID + 1;
navDiv += "<div id=\"picNav\" ng-click=\"picturePop(" + next + ");\">Next</div>";
}
$('#innerPictureDisplay').html(closediv + "<br/><br/><img src=\"images/paintings/" + pic + "\" /><p><b>" + title + "</b><\p><p>" + desc + "</p>"+ navDiv);
$('#outerPictureDisplay').css('display','block');
};
「CLOSE」とナビゲーション項目が機能するように、そのコードを「再コンパイル」するにはどうすればよいですか?
アップデート
だから、私は自分のアプローチを変更しましたが、明らかにまだ何かが欠けています:
私の新しいHTML:
<div id="outerPictureDisplay" ng-show="picID > 0">
<div id="innerPictureDisplay">
<div id="divClose" class="floatRight" ng-click="picID = 0;">Close</div>
<div id="picNav" ng-click="picturePop({{prevID}});" ng-show="picID > 1">Previous</div>
<div id="picNav" ng-click="picturePop({{nextID}});" ng-show="picID < picCount">Next</div>
<img src="images/paintings/{{thisPic.image}}" />
<p>
<b>{{thisPic.title}}</b>
</p>
<p>{{thisPic.desc}}</p>
</div>
</div>
私の新しい機能:
$scope.picturePop = function(picID){
match = $.grep($scope.gallery, function(obj) { return obj.id == picID; });
$scope.thisPic = match[0];
$scope.picID = picID;
$scope.nextID = picID + 1;
$scope.prevID = picID - 1;
var $content = $('#innerPictureDisplay');
var scope = $content.scope();
$compile($content.contents())(scope);
};
写真をクリックすると、すべて正常に読み込まれますが、前または次をクリックすると、picID が null として登録されているため閉じます。私がチェックしたところ、数字は実際にコードに出力されていますが、角度をクリックしても数字が表示されません。それらは未定義として通過しています-一見コンパイルの問題です。提案されたリンクを使用しても、すべてをディレクティブとして実装しようとしましたが、役に立たなかったので、何かをしたに違いありません。