1

私は(おそらく)本当に簡単な問題を抱えていますが、それを解決するために予想以上の時間を費やし、まだ解決していません。

アプリケーションのディレクティブを複製するのは難しいため、簡単にするために、単純なディレクティブを使用してJSFiddleでスクリプトを作成しましたが、結果は同じでした。

基本的に、この問題は、それぞれに異なるオプションを使用して 2 回呼び出されたディレクティブに関連しています。その結果、レンダリングされたディレクティブは常に最初のオプション セットの値を取得します (場合によっては 2 番目のセットのみ)。

私のHTML:

<div ng-controller="MyCtrl">
    <button-menu options="options1" />
    <button-menu options="options2" />
</div>

私のオプション(コントローラー内):

// Button Options        
$scope.options1 = {
    id: "1",
    buttonTemplate: "<span style=\"font-size:16pt\">Button 1</span>"
};

$scope.options2 = {
    id: "2",
    buttonTemplate: "<span style=\"font-size:10pt\">Button 2</span>"
};

何が間違っているのかわかりませんが、実際には、同じページで少なくとも 2 回ディレクティブを実行する必要があるのはこれが初めてなので、おそらく何かが欠けています。

何か案は?

ありがとう

4

2 に答える 2

6

動作する更新されたフィドルは次のとおりです。 http://jsfiddle.net/DewZb/4/

まず奇妙な理由で、ボタンメニューの終了タグが必要です:

<button-menu options="options1"></button-menu>
<button-menu options="options2"></button-menu>

分離スコープを作成します。

scope: {options: '='}

次に、リンク関数で:

scope.buttonOptions = scope.options;
于 2013-10-03T14:09:06.480 に答える
2

スコープは、ページ上の同じカスタム ディレクティブ間で共有されます。分離スコープを持つようにディレクティブをセットアップできます。

それらが最初または2番目にかかるのを見ている理由は、Angularコンパイルがそれらをどのように順序付けたかに応じて、リンクが異なる時間に発生しているためです。これは、両方の優先度が同じであるためです。

http://www.ng-newsletter.com/posts/directives.html

于 2013-10-03T14:03:37.470 に答える