誰かがこの問題に遭遇してここに投稿したと確信していますが、見つけられませんでした。そのため、ごめんなさい。 データベースのすべてのデータセットのグラフが必要なダッシュボードを作成しています。すべてのデータセットについてハイチャートを作成
データをディレクティブに送信し、そのディレクティブに渡されたデータを使ってディレクティブのコントローラ内からグラフを描画してみました。
この部分図
<div class="row">
<div class="col col-md-9">
<input type="text" class="form-control" ng-model="nameFilter" placeholder="Search for...">
</div>
</div>
<div class="row" ng-if="loading">
<div class="col col-md-6 col-md-offset-3">
<img src="../img/loader.gif"/>
</div>
</div>
<div class="row" ng-repeat="app in apps | filter: nameFilter">
<app-card name="app.name" android="app.android" ios="app.ios" date="app.date"></app-card>
</div>
である部分は、ディレクティブ
var app = angular.module('app');
app.directive('appCard', function() {
return {
restrict: 'E',
scope: {
name: '=name',
android: '=android',
ios: '=ios',
date: '=date'
},
templateUrl: 'http://testsite.nl/dashboard/partials/directives/app-card.html'
};
});
ディレクティブテンプレート
<div class="panel panel-info app-card" ng-controller="appCardController">
<div class="panel-heading">
<div class="row">
<h4 class="col col-md-5">{{name}}</h4>
</div>
</div>
<div class="panel-body">
<div class="col col-md-12">
<h3>Android downloads: {{android}}</h3>
<h3>iOS downloads: {{ios}}</h3>
<div id="container" style="min-width: 310px; height:250px; margin: 0 auto;"></div>
</div>
</div>
</div>
にデータを送信し、コントローラは、この
のように見えます正しい名前と配列の値を持つディレクティブテンプレートが表示されますが、唯一の問題は、リスト内の最後の項目に属するグラフですが、最初のテンプレート。
どのようにしてすべてのテンプレートにデータに基づくグラフが含まれるようにすることができますか?
単純なHTMLの問題:要素IDの属性は一意である必要があります。要素 "#container"にグラフを描画するようにすべてのデータセットに指示すると、新しい各グラフは前のグラフを上書きするため、最後のグラフのみが表示されます。 – jlbriggs
これは問題だと思っていましたが、IDの重複はそれほど重要ではないという意味で、スコープを持つディレクティブを介してデータを渡したので、私は考えました。しかし、私は今それを働かせました。ありがとう! –