2016-05-11 8 views
2

Ich versuche, ein Array von Objekten von Eltern-Direktive an Kind-Direktive zu senden, aber ich bekomme console.log ($ scope. $ Eval (attrs.model)) als undefiniert.AngularJs-Teilen Objekt Array zwischen Direktiven

angular.module('tester').directive('gChart',gChart); 
    function gChart() { 

     var template = getTemplate; 
     return { 
      restrict: 'E', 
      require: "^Logs", 
      replace:true, 
      template: template, 
      scope:{ 
       model: "=" 
      }, 
      link: function($scope, $element, attrs, LogsCtrl) { 
       console.log($scope.$eval(attrs.model)); 
       LogsCtrl.show($scope.$eval(attrs.model)); 
      } 
     }; 

     function getTemplate() { 
      return'<div id="chart" style="width: 600px; height:    500px;margin: 0px auto;"></div>'; 
     } 
    } 

Antwort

1

In dieser Situation, die ich Fabrik verwenden würde und dass Fabrik in beide injizieren Richtlinie. Das Teilen nach dem Standard in eckigen Winkel sollte über die Fabrik erfolgen. Es wird dein Leben leicht machen. Wenn Sie Hilfe benötigen, lassen Sie mich wissen, aber Fabrik verwenden, um Daten zwischen Controller und Richtlinie zu teilen, die Anwendung prüfbarer auch

+0

Ich benutze einen Service, um diese Daten zu teilen, haben Sie einen Link, den ich verweisen kann, um die beste Praxis zu sehen als Fabrik gekennzeichnet? – aemorales1

+0

mit einer Fabrik löste das Problem! Danke ! :) – monsoonrainbow

0

Sie müssen alle Ihren Code für uns zu veröffentlichen, um zu verstehen. Außerdem sollte sich Ihr Datenfeld in $scope.model und nicht in attrs.model befinden. Dies liegt daran, Sie den Umfang Ihrer Richtlinie als

scope:{ 
    model: "=" 
}, 

Also, in Ihrem HTML definieren, sollten Sie etwas wie:

<tester model="YOUR_DATA" ></tester> 
Verwandte Themen