2017-07-05 1 views
0

タグ属性からコントローラからディレクティブに渡されるデータはどのように使用できますか?そのショーはコンソールで未定義です。角度指示リンクでデータを使用しますか?

App.directive('applist', ['$rootScope', function($rootScope) { 
'use strict'; 
    return { 
     restrict: 'E', 
     scope: { 
      gamesList: '=', 
     }. 
     link: function(scope,attrs){ 
      console.log(scope.gamesList); //undefined 
     } 
    } 
}]) 

とhtml:あなたがあなたのタグを変更する必要があります

<applist games-List="games"> 
    <div ng-repeat="(key, value) in gamesList | groupBy: 'game.id'"> ... </div> 
</applist> 

答えて

1

使用@: 修正コード:

<!DOCTYPE html> 
<html ng-app="myApp"> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> 
<body> 

<applist games-list="games"></applist> 
<script> 
var App=angular.module('myApp',[]); 

App.directive('applist', ['$rootScope', function($rootScope) { 
'use strict'; 
    return { 
     restrict: 'E', 
     transclude:true, 
     scope: { 
      gamesList: '@', 
     }, 
     link: function(scope,attrs){ 
      console.log(scope.gamesList); //games 
     } 
    } 
}]) 
</script> 


</body> 
</html> 
+0

この後にコンソールでエラーが発生します... リピータの重複は許可されません。固有のキーを指定するには、 'track by'式を使用します。リピータ:gamesListのゲーム、重複キー:文字列:p、重複値:p –

+0

ディレクティブ内でng-repeatを使用していますか?あなたのコードのためのjsfiddleを作ることができますか?上記のコードがスタンドアロンモードで正常に動作しているので、 –

+0

はい)私はコードを更新しました –

1

: ' - ' の角度で、

<applist games-list="games">...</applist> 

また、あなたの属性でキャメルケースを一緒に使用されますhtmlタグ。そして、あなたは「ゲーム」に「忘れました」

編集:前述のように、リンクの前のドットは、ディレクティブを中断させています。試してみてください:文字列値を取得するための

return { 
    restrict: 'E', 
    scope: { 
     gamesList: '=' 
    }, //change dot to coma 
    link: function(scope,attrs){ 
     console.log(scope.gamesList); //undefined 
    } 
} 
+0

はいその私のミスが、この後に、それはまだここに正常に動作@AroTonoyan –

+1

を動作しないようになります。一度(http://plnkr.co/edit/lwxBp6z2fMdTi0nP3Dou?p=previewあなたはコンマにリンクする前にドットを変更します) –

0

を指示からデータを取得するには、コード

にconsole.log(scope.gamesList)の下に使用することができます属性;

あなたのディレクティブは

App.directive('applist', ['$rootScope', function($rootScope) { 
'use strict'; 
    return { 
     restrict: 'E', 
     scope: { 
      gamesList: '@', 
     }, 
     link: function(scope,attrs){ 
      console.log(scope.gamesList); //games 
     } 
    } 
}]) 
関連する問題