2017-04-08 14 views
2

AngularJSを初めて使用しました。私が作成したディレクティブの助けが必要です。 これは私のHTMLです:AngularJS指令がデータで起動したときに認識されない*

<data-table template-url="dataTable.html" info="someData"></data-table> 

私は、コントローラ内のサーバーから「someDataが」を取得 - directive.js:

app.directive('dataTable', function() { 
return{ 
    restrict: 'E', 
    scope: { 
     data : '=info' 
    }, 
    link: function($scope,elem,attrs){ 
     ///some code here. 
    }, 
    templateUrl : function(elem, attrs) { 
     return attrs.templateUrl; 
    } 
}); 

問題は、私は自分のコードをデバッグするとき、それはによってディレクティブに来ています内部には入っていない。 (私はクロムでjavascriptデバッグを使用しました)。私は行方不明のものはありますか?制限タグは適切ですが、名前は他に必要なものは正しいですか?私は、同様の質問を見ましたが、解決策を見つけることができませんでした。 Demo

+0

私はディレクティブの構文が間違っていると思います。 –

+0

私は間違いを起こしたエラー/ポイントを指摘できますか? @HJz – Subhash

+0

'templateUrl'は文字列でなければなりません。おそらく、あなたのディレクティブがロードされているかもしれませんが、テンプレートを見つけることはできません。 – ghostprgmr

答えて

2

あなたは、そのAngularJS ng core namespacesで予約しているためdata-*で始まるディレクティブ名を使用することはできません。ここではフィドルです。ちょうど他の名前を使って始めるとうまくいくでしょう。

<my-data-table template-url="dataTable.html" info="someData"></my-data-table> 

そして、あなたのディレクティブ:

myApp.directive('myDataTable', function() { 
    return { 
    scope: { 
     data: '=info' 
    }, 
    link: function($scope, elem, attrs) { 
     ///some code here. 
     console.log(attrs.templateUrl); 
    }, 
    templateUrl: function(elem, attrs) { 
     return attrs.templateUrl; 
    } 
    } 
}); 
+0

なぜこれが起こったのか説明できますか? ngRepeateや他のもののような呪文の命名にカメル表記法を使用するのはOKだったと思いました。 – Subhash

+0

@Iin前にも要素名で使用していましたが、うまくいきました。 – Subhash

+0

心配しないで、あなたは私の時間を大いに節約しました。 – Subhash

関連する問題