0

角度が非常に新しいです。この指令がなぜ機能しないのか理解してください。どのコンセプトを学ぶべきかを指摘してください。私は、文字列としてテンプレートを書き出していたが、それは非常に醜いと私は別のHTMLファイルに入れたいとき指令:コントローラーは機能ではありません

ディレクティブを働いていました。 index.htmlを

<div message-modal trigger="trigger_message_modal"></div> 

エラーメッセージ$scope.trigger_message_modal is not a function

app.module.directive('messageModal', function ($compile) { 
    return { 
     scope: { 
      trigger: "=trigger" 
     }, 
     controller: ['$scope', '$element', '$attrs', '$timeout', function ($scope, $element, $attrs, $timeout) { 

       $scope.trigger = function(title, message, modal_class, color, auto_hide){ 
        $scope.message = message; 
        $scope.modal_class = modal_class; 
        $scope.color = color; 
        $scope.title = title; 

        $('#messageWell').modal('show'); 

        if(auto_hide == true){ 
         $timeout(function(){ 
          $('#messageWell').modal('hide'); 
         }, 1000) 
        } 
       }; 
     }], 
     restrict: "E", 
     templateUrl :"well.html"       
    }; 
}); 
+1

'$ scope.trigger_message_modal'はどこからトリガーされましたか?ディレクティブコントローラがインスタンス化される前に関数がトリガされるタイミング問題である可能性がありますか? – jchen86

答えて

0

はディレクティブがEに制限されて動作していないdirectives.jsべきディレクティブを意味要素として使用する場合、 <message-modal trigger="trigger_message_modal"> </message-modal>。そのときだけ、trigger属性をディレクティブのスコープを使用してディレクティブで使用できます。 message-modalを属性として使用する必要がある場合は、制限をAに変更しますが、triggerをスコープ変数としてアクセスすることはできず、親要素の$attrsを使用してアクセスする必要があります。

+0

restrict 'A'を使っている間に 'trigger'にアクセスできないのはなぜですか? – Icycool

+0

'trigger'はそのスコープ内でアクセスできません。親属性からのみアクセスできます。それを明確にするために私の答えを編集しました。 – rraman

+0

私は両方を使ってみましたが、彼らはほとんど同じ[jsbin](https://jsbin.com/sutedunoxo/edit?html,js,output)を仕事しました – Icycool

関連する問題