お世話になります。
特殊な事情で、Angular1.3を使っている環境で、
HTMLのDOMがパースされたあと、
あとからDOMをいじって、direcrtiveを与える必要があります。
前任者が作ったスクリプトは変更ができません。
現状は、
・HTML自体には触れない。
・前任者が作ったAngularのスクリプト(controllerやdirectiveなど)は変更できません。
・前任者は、Ajaxでサーバサイドからニュース一覧を取得し、
それをng-repeatで一覧表示する仕組みを作っていました。
やりたいこと
・各行が、ng-repeatで表示されたことを検知したい(その行にスタイルを当てるなど何か処理をしたい)。
できていないこと
・すでにcontrollerやdirectiveが動作して、HTMLもAngularにパース(?)されたあとで、
改めて「rendered」のようなdirectiveを定義しても、反映されない様子。
いまは、DomContentLoaded( window.loadや$.readyより前に動作 )のタイミングで、
もともとのDOM自体には「rendered」をつけることはできたのですが、
新たにrendered ディレクティブを定義しても反映されず、悩んでおります。
データバインドの話題では、$scope.$applyという物があるようですが、
これとは違うようです。
具体的には、DomContentLoadedのタイミングで、下記のようにJSを読み込ませています。(DOMContentLoadedが発火していることは確認済みです)
var script = document.createElement("script"); txt += 'appModule.directive("rendered", function () {'; txt += 'console.log("directive test!");'; txt += 'return {'; txt += 'restrict: "A",'; txt += 'link: function (scope, element) {'; txt += 'console.log("link test!");'; txt += ' element.bind("mouseenter", function () {'; txt += 'console.log("マウスin");'; txt += '});'; txt += '}'; txt += '}});'; script.textContent = txt ; document.body.appendChild(script);
まずdirectiveを読み込んでいれば「"directive test!"」が表示されるかと思いますが、これは反映されません。
もちろん、それ以降のconsole.logも無反応です。
拙い説明でわかりにくいかと思いますが、
ご教授いただけますと幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー