2016-12-14 11 views
0

私はクラス名にアクセスしてコンソールに出力しています。これはコンパイル、プレ、ポストではうまく動作しますが、ディレクティブコントローラではエラーが発生します。誰かが解決できますか?あなたは、コントローラに注射用のサービスを取得しますbeacuseクラス名は、コンパイル、プレ、ポストによって返されますが、ディレクティブコントローラでは返されません。

//module declaration 
 
var app = angular.module('myApp',[]); 
 

 
//controller declaration 
 
app.controller('myCtrl',function($scope){ 
 
$scope.name = "Peter"; 
 
}); 
 

 
//app declaration 
 
app.directive('myStudent',function(){ 
 
return{ 
 
\t template: "Hi! Dear!! {{name}}<br/>", 
 
\t compile:function(elem, attr){ 
 
\t \t console.log("compile"); 
 
\t \t return{ 
 
\t \t \t pre:function(scope,elem,attr){ 
 
\t \t \t \t console.log("pre" + attr.class); 
 
\t \t \t }, 
 
\t \t \t post: function(scope,elem,attr){ 
 
\t \t \t \t console.log("post"+ attr.class); 
 
\t \t \t } \t \t \t \t \t 
 
\t \t } 
 
\t }, 
 
\t controller: [function(scope, elem, attr){ 
 
\t \t console.log("controller" + attr.class); 
 
\t }] 
 
} 
 
});
<body ng-app="myApp" ng-controller="myCtrl"> 
 

 
<my-student class="one"></my-student> 
 
<my-student class="two"></my-student> 
 
<my-student class="three"></my-student> 
 
<my-student class="four"></my-student> 
 
<my-student class="five"></my-student> 
 

 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.5/angular.min.js"></script> 
 
</body>

+0

は、スニペットが実行したときに表示するために何を想定している?作りますかどこにでも名前にアクセスしているようには見えません。ページには{{{name}} 'を表示するのではなく、' 'compile''を繰り返し表示するだけではなく、出力のどこにでも" Peter "が表示されません。 –

+0

コントローラにコメントしてください。 – Deadpool

答えて

1

です。コントローラ

  • のようにあなたは$スコープと$ attrsには作り付けのサービスで見ることができるようにあなたが
  • のattr

の代わりに$ attrsにを取得するというし、単にスコープ

  • を$スコープを取得します角張っている。

    ので

    controller: function($scope, $attrs){ 
         console.log("controller" + $attrs.class); 
        } 
    

    または

    controller: ['$scope','$attrs',function($scope, $attrs){ 
          console.log("controller" + $attrs.class); 
         }] 
    

    のようなあなたのコントローラが従ってください。このplnkr

  • +0

    引数名の変更は何も変更しません。これはコントローラ外部指令とは異なります。あなたが確信が持てないなら、フィドルを気にしてください。 – Deadpool

    +0

    @Deadpoolこれは引数名の変更ではありません。それはサービスが角度をもって書かれた方法です。より良い理解のために、いくつかの角度に関するチュートリアルに従ってください。 –

    +0

    @Deadpoolはplnkrを追加しました...コントローラはコントローラですが、どちらも同じです。コントローラを部分的にまたは指令に適用できます。 –

    関連する問題