2013-04-22 13 views
26

私はすでに存在するディレクティブの上に新しいディレクティブを作成しようとしていますが、複数のディレクティブ[ディレクティブ#1、ディレクティブ#2]が隔離されたスコープを要求しています

Multiple directives [directive#1, directive#2] asking for isolated scope on <easymodal title="Test-Title" text="Text-Text" oncancel="show = false" onok="alert();">

ベースディレクティブは、次のようになります:ページをロードするとき、私は次のエラーに直面しています

Rohan.directive('easymodal', function() { 
    return { 
     restrict: 'E', 
//  priority: 200, 
     transclude: true, 
     replace: true, 
     scope:{ 
      showModal: "=show", 
      callback: "=closeFunction", 
      dismissable: '&' 
     }, 
     template: 
      '<div data-ng-show="showModal" class="modal-container">' + 
       '<div class="modal-body">' + 
        '<div class="title"><span data-translate></span><a data-ng-show="dismissable" data-ng-click="dismiss()">x</a></div>' + 
        '<div data-ng-transclude></div>' + 
       '</div>' + 
       '<div class="modal-backdrop" data-ng-click="dismiss()"></div>' + 
      '</div>' 
    }; 
}); 

そして、私のラッパーディレクティブは次のようになります。

Rohan.directive('easydialog', function() { 
    return { 
     restrict: 'E', 
     transclude: true, 
     scope: {title: '@', 
      text: '@', 
      onOk: '&', 
      onCancel: '&'}, 
     replace: true, 
     template: 
      '<easymodal>' + 
       '{{text}} ' + 
       '<hr>' + 
       '<button ng-click="{{onCancel}}" value="Cancel"' + 
       '<button ng-click="{{onOk}}" value="Ok"' + 
      '</easymodal>' 
    }; 
}); 

私のHTML次のようになります。

<easydialog title="Test-Title" text="Text-Text" onCancel="show = false" onOk="alert();" /> 

最初は私のタイトル属性が矛盾していたので、html行とラッパーディレクティブで属性を削除しましたが、効果がありませんでした。

+0

あなたはフィドルを設定してください。 –

答えて

31

easydialogテンプレートを変更して<easymodal><div>に書き込む必要があります。

+5

ありがとう、私はそれを推測したことはありませんでした。 – Rohan

+2

あなたはそれについて詳述できますか?最初の問題は何ですか?どのようにdivでラッピングして問題を解決していますか? – masimplo

+5

@ mxa055 AngularはHTML要素をスコープに関連付け、1つのHTML要素を複数のスコープに関連付けることはできません。 – Langdon

0

あなたの問題は、directiveの中にtemplate引数を追加するだけでなく、実際のHTMLテンプレートに解決テンプレートタグ<easydialog>を追加することです。どちらか一方を選択してください。

関連する問題