問題タブ [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 投票する
5 に答える
2030 参照

angularjs - AngularJS: 最初のディレクティブから 2 番目のディレクティブに属性を補間できません。(プランカーの例付き)

参照

参照プランカー: http://plnkr.co/edit/otv5mVVQ36iPi3Mp0FYw?p=preview

問題の説明

と の 2 つのディレクティブがあるfirst-directiveとしsecond-directiveます。ここで、ラップして独自の操作された属性に渡すことfirst-directiveを望んでいるアクセスしかないとします。second-directive

first-directive次のように呼び出されます。

console.log は次のように出力されます。

このことから、コンパイル前にテンプレートが呼び出されることを学びました。これは、コンパイル、コントローラー、プリ、またはポスト リンクを介してテンプレート関数によって返された値を操作する方法がないため、私の初心者の目には独特です。

質問はこれです:

必要な動的属性値でを呼び出すにはどうすればよいsecond-directiveですか? second-directiveは完全に独立しており、そこにコードを追加できないことに注意してください。

PS - 私が考えている考えの 1 つは、次のように 2 番目のディレクティブを呼び出すことです。

または代わりに

繰り返しますが、他の関数が呼び出される前に first-directive に渡される値を取得する方法がわかりません。コントローラーは $scope にアクセスでき、AFTER テンプレートと呼ばれます。

あなたの提案は大歓迎です。

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

javascript - AngularJS : テンプレート サブ要素でオプションのネストされたディレクティブを呼び出す

フォーム内のフィールド (ラッピング div、ラベル、入力など) のすべての HTML を発行するディレクティブを作成しようとしています。一部のフィールドでは、Angular UI Bootstrap の「typeahead」ディレクティブを使用したいと考えています。

テンプレートで、最初に ng-attr-typeahead='{{myTypeahead}}' を使用してみました。「myTypeahead」が設定されていないフィールドでは、「typeahead」属性の証拠はないと予想しました。代わりに、ディレクティブの処理中に、属性が未定義の値で属性リストに存在し、typeahead ディレクティブが呼び出され、その入力が未定義であるため、すぐに爆発します。

次に、次のようなポストコンパイル関数を使用してみました。

これにより、input 要素に「typeahead」属性が設定されますが、typeahead ディレクティブは呼び出されません。

これはおそらく他の投稿と重複していると思いますが、正しい言葉で検索していません。

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

angularjs - angularテンプレートを$コンパイルして、エイリアスを持つ複数のコントローラーで機能させる方法は?

テンプレートを別のテンプレートにコンパイルするだけのカスタム ディレクティブがあります。

私はそれを次のように使用します:

コントローラーのエイリアスを (angular UI ルーターを使用して) 使用しているため、いずれかのテンプレートのすべてのモデルは次のようになります。

CtrlAlias が変更される複数のテンプレートでこのディレクティブを機能させるにはどうすればよいですか?

$compile(contents)(scope); を変更してみました。$compile(contents)(scope.newCtrlAlias) に;

何か案は?

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

javascript - イベントリスナーによるディレクティブの優先度


-direc (優先度レベル 1) -directive (優先
度レベル 0)という2 つのディレクティブを持つ 1 つの入力要素があります。

direcが最初に実行されるはずであっても、ディレクティブが最初に実行されます
なんで?

ここに何が起こっているかを示すスニペットがあります

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

angularjs - Angular composite (super) directive not allowing 2 way binding on component (child) directives

I have a need to create a composite directive that incorporates separate fully functional directives. One of my component directives adds an element to the dom and that element binds to a value in the component directive's controller. When the composite directive adds the component directive in the compile function, it seems to work but the piece that has the 2 way binding in the component directive does not appear to get compiled and just renders the {{ctrl.value}} string on the screen. I realize this is a bit convoluted so I have included a plunk to help clarify the issue.

http://plnkr.co/edit/alO83j9Efz62VTKDOVgc

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

angularjs - スコープ関数を複製された(およびコンパイルされた)Angularディレクティブに渡します

親コントローラー関数を属性として取ることができる角度ディレクティブがあります。DOM 操作中に、この angular ディレクティブは複製され、コンパイルされ、DOM の最初の部分に配置されます。その結果、親コントローラーがなくなるため、渡された親コントローラー関数は機能しなくなります。どうすればこれを解決できますか?コンパイル時に、親コントローラー関数をオリジナルからクローンに渡すことはできますか? 私はこれを試しましたが、うまくいきません:

この getBack() 関数は cloned ディレクティブで使用されます。アクティブ化されると、undefined がログに記録されます。ヒントはありますか?

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

javascript - ng-click fired multiple times after compile

I have read many SO answer but couldn't resolve the problem.

I have a Javascript function that create HTML element like document.createElement(...)

This is a part of that function :

#xA;

This function is called at the start of the application and create many rows so when the page is loaded the HTML generated by the function look like this : (this sample code is simplified to be more comprehensible)

#xA;

The Angular controller :

#xA;

At the end of the function when all elements are created I compile with :

#xA;

But when I click on the button the "hello" is fired many times !

If I have 10 elements on the page and click on the first element it is fire 10 times, if I click on the second element it is fired 9 times and so on..

I have tried to move the ng-controller declaration inside the button button.setAttribute("ng-controller","ProjectController"); Or even in the <body> tag but I still get the same behavior.

Thanks for you help

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

javascript - AngularJS: 親に ngIf ディレクティブがある場合、祖父母要素に属性を追加できないのはなぜですか?

私はバニラ AngularJS v1.4.5 (jQuery なし) を使用しており、カスタム ディレクティブでコンパイル時に祖父母要素に属性を追加したいと考えています。

compile 関数では、twoメソッドを使用して祖父母要素を取得し、parent()メソッドを使用して属性を追加することで、これを実現できます。ただし、要素にngIfディレクティブがある場合、祖父母要素は属性を取得しません。elementattr()

JSFiddle

私が知っていることは次のとおりです。

  • 親要素で が使用されていない場合ngIf、属性は祖父母に追加されます。
  • この問題はscope、スコープが要素にリンクされる前のコンパイル段階で発生しているため、 に関連するものではありません。
  • 私のコンパイル機能ngIfは、の優先度を持つ600(およびコンパイル機能を持​​たない)の前に実行する必要があります。
  • ngIfDOM 内の要素を (その子要素と共に) 完全に削除して再作成しますが、祖父母要素に影響を与えたり、その属性を変更したりしてはなりません。

親要素にディレクティブがある場合、ディレクティブの祖父母要素に属性を追加できない理由を誰かに説明できますngIfか?