2016-11-02 7 views
0

私はその下のスコープ変数の1つ渡して関数を呼び出したいのですが、私はエラーを取得しています:Angularディレクティブでテンプレートを呼び出す前に関数を呼び出しますか?

ReferenceError: activityLog is not defined

私はここで何をしようとしているが、可能な場合だけ不思議?私の関数はOKと呼ばれていますが、スコープ変数にも渡すことができます。

function (angular, jQuery, oModule) { 
    'use strict'; 

    oModule.directive('myDirective', function() { 
     return { 
      restrict: 'E', 
      scope: { 
       activityLog: '@', 
      }, 
      // Why can't I pass activityLog here? 
      // ReferenceError: activityLog is not defined 
      template: generateDetails(activityLog) 
     }; 
    }); 

    function generateDetails(oActivityLog) { 

    } 
+0

あなたはそこに渡すことはできません。あなたは明らかにAngularで別々にやるべきことをしようとしています。あなたが達成したいことを説明してください。 – estus

+0

@estus generateDetails関数には、activityLogのwhatsに基づいてJavaScriptロジックが多数用意されています。そのロジックを実行してテンプレートのコンテンツを生成する必要があります。 – Rory

+0

この方法は正しくありません。ディレクティブテンプレートが作成された時点では、バインディングは使用できません。あなたがそれを実装する際に問題があるなら、ここで正確に何をすべきかを説明してください。それで適切な質問が与えられます。 – estus

答えて

1

リンク機能にはactivityLogスコープが必要です。あなたが存在するなら、テンプレートはhtmlテンプレートを持っています。

function (angular, jQuery, oModule) { 
    'use strict'; 

    oModule.directive('myDirective', function() { 
     return { 
      restrict: 'E', 
      scope: { 
       activityLog: '@', 
      }, 
      link:function(scope, element, attr) { 
       generateDetails(scope.activityLog); 
      }, 
      template: '<div>123</div>' //html template here if needed 
     }; 
    }); 

    function generateDetails(oActivityLog) { 

    } 
} 
関連する問題