2

ng-grid の 1 つのセルの各行に jQuery Sparkline を表示しようとしています。列には数値配列データが含まれています。

Plunkr --> http://plnkr.co/edit/1eNEcx6FQWcJynlVYvFw?p=preview

これを実現するために、セル テンプレートでディレクティブを使用しています。

セル テンプレート:

指令:

app.directive('ngAge', function() {
  return{
    restrict: 'C',
    replace: true,
    translude: true,
    scope: {ngAgeData: '@'},
    template: '<div>' +
              '<div class="sparklines"></div>' +
                '</div>',
    link: function(scope,element,attrs){
     // var arrvalue= "3386.24000,1107.04000,3418.80000,3353.68000,4232.80000,3874.64000,3483.92000,2735.04000,2474.56000,3288.56000,4395.60000,1107.04000";
     //console.log(attrs.ngAgeData);
     var arrvalue = attrs.ngAgeData;
     var myvalues = new Array();
     myvalues = arrvalue.split(",");
     $('.sparklines').sparkline(myvalues); 

    }
  }
});

リンク関数内で attrs.ngAgeData 値を取得するのが困難です。何が欠けているのかわかりません。助けてください!!!

ありがとう

4

1 に答える 1

2

このセル テンプレートを使用します。

cellTemplate: '<div age-line agedata=row.entity.age></div>'

値は属性として渡されることに注意してください。

ディレクティブは次のようにする必要があります。

app.directive('ageLine', function () {
    return {
        restrict: 'A',
        scope: { agedata: '=' },
        link: function (scope, elem) {
            scope.$watch('agedata', function (newval) {
                elem.sparkline(scope.agedata);
            });
        }
    };
});

また、要素はすでに jquery(lite) オブジェクトであるため、$. は必要ないことに注意してください。

ここに作業プランカーがあります: http://plnkr.co/edit/oDbPp9DGFCGGZF30Bzsi?p=preview

于 2013-09-27T10:22:16.883 に答える