問題タブ [angularjs-compile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1613 参照

javascript - angularjs ディレクティブをネイティブ html 要素 (入力テキスト、div、span など) に追加しますか?

私はこのようなものを持っています -

ページ上の既存の html 要素にカスタム ディレクティブを属性として追加するにはどうすればよいですかcategoryLookup

ページの読み込み時にこれを動的に行う必要があります。つまり、入力テキストをディレクティブ ロジックごとに動作させる必要があります。

前もって感謝します。

0 投票する
2 に答える
439 参照

angularjs - $compile がディレクティブで ng-href をコンパイルしない

属性にテンプレートを渡し、それをコンパイルして後でレンダリングすると、式がコンパイルされていない を除いて、 $compile は正常に機能しますng-href="expression"

これはコンパイル機能で行われ、リンク機能では遅すぎますか?

ところで、テンプレート スコープをその親にリンクします。コントローラーのスコープである最も近いスコープを見つけるにはどうすればよいですか。

$parentすべてのケースでコントローラーのスコープであるとは限りません。

0 投票する
0 に答える
1359 参照

angularjs - Angular 1.4 でスコープ関数をディレクティブに拡張する

angular-ui.github.io/bootstrap/ datepicker を拡張しようとしていますが、うまくいかないようです。

「TypeError: scope.monthChanged は関数ではありません」というエラーが表示され続けます。Angular のコードを適用しました- ui-bootstrap - datepicker - 月がいつ変更されたかを検出する方法はありますか?

HTML は次のとおりです。

このプランカーを試してください: http://plnkr.co/edit/sXuAkUz0l9XdtdUb457V?p=preview コードを調べると、インライン カレンダーを次の月に変更すると、次のエラー コードが表示されます: TypeError: scope.monthChanged is not a関数 –</p>

0 投票する
1 に答える
944 参照

angularjs - コンパイルVSテンプレート機能を使用した角度動的テンプレート?

compile: vs link(pre/post)vsの各項目の目的はすでにわかっています。controller

だから私はこの単純なコードを持っているとしましょう:

HTML

Controller

Directive

ご覧のとおり、テンプレートを変更します(compile関数で-実際にあるべき場所です)

結果 ( plnker ):

しかし

それが関数template:...を取ることもできるとは知りませんでした。

したがって、template代わりに関数を使用できます(plunker):

質問

その場合 -template関数 vscompile関数はいつ使用する必要がありますか?

0 投票する
2 に答える
308 参照

javascript - 属性名を正規化/非正規化する前に元の属性名を取得する方法は?

<select>要素で使用できるディレクティブを作成して、<select>動的に更新され、アプリ内のすべてのコンポーネント間で共有される、グローバルに知られているリストを設定するように指示したいと考えています。

私はそれを次のように使用することを想定しています:

これが私がこれまでに行っている方法です:

つまり、ng-optionsこの目的のために設定したスコープに基づいて、必要な機能を実行する属性を割り当ててから、それを割り当てます$compile


これはうまくいきます。しかし、私がATTENTIONでコメントした行に注意してください: これは、ユーザーが<select select-the-list>を使用したことを前提としていますselectTheList。ただし、ディレクティブ docsによると:

Angularは要素のタグと属性名を正規化し、どの要素がどのディレクティブに一致するかを判断します。通常、大文字と小文字を区別するキャメルケースの 正規化された名前 (例: ngModel) でディレクティブを参照します。ただし、HTML では大文字と小文字が区別されないため、DOM 内のディレクティブを小文字の形式で参照します。通常は、DOM 要素のダッシュ区切りのng-model属性を使用します (例: )。

正規化のプロセスは次のとおりです。 [... 中略 ...]

たとえば、次の形式はすべて同等であり、ngBindディレクティブに一致します。

つまり、ユーザーが実行<select select:the:list>すると、ディレクティブが適用され、機能element.removeAttr('select-the-list')せず、無限ループが発生します


これはXY 問題である可能性があるため、このコンテキストをすべて提供しました。しかし、これが良い方法である場合、ディレクティブが呼び出される原因となった要素の実際の属性を見つける最良の方法は何ですか?再コンパイルする前に削除できますか?

0 投票する
1 に答える
140 参照

angularjs - 関数を属性値として含む $compile

$compile で 1 つの問題に直面しています。私が書いたコードは非常に大きいので、この問題を再現するために 1 つの小さな例を作成します。私のページにボタンがあるとします。ユーザーがそのボタンをクリックすると、以下に示すように ng-click メソッドを持つもう 1 つのボタンが作成されます。

HTML:<button type="button" ng-click="createExample()">test</button>

ユーザーがボタンをクリックすると、createExample() メソッドが呼び出されます。このメソッドは、ng-click を持つ別のボタンを作成します。この ng-clicks には、アラートを出すメソッドが含まれています。

以下のエラーが発生します。

$compile は私が持っている唯一のオプションです。これを機能させる方法は??

JSFiddleここ