0

辞書(JavaScriptオブジェクト)に入力し、文字列インデックスを使用して辞書から値(カスタムオブジェクト/クラス)を取得しようとしています。次に、ディクショナリから値を取得したら、このオブジェクトのメソッドを呼び出す必要があります。残念ながら、ディクショナリから取得されると、それは単なるオブジェクト(typeof「オブジェクト」を返す)であるため、これは機能しません。

したがって、私がやろうとしているのは、最初にディクショナリにプッシュされたオブジェクトタイプにキャストすることです。これは私の場合は次のとおりgoogle.visualization.Gaugeです。(参考

Object.createを使おうとしましたが、うまくいきませんでした。以下は私のコードです:

var _gauges = {};

var methods = {
    init: function (options) {

        var containers = this;

        if (containers != null && containers != undefined && containers.length > 0) {
            containers.each(function (index, elem) {

                var id = $(elem).attr('id');
                var name = $(elem).data('name');
                var value = $(elem).data('value');

                var data = google.visualization.arrayToDataTable([
            ['Label', 'Value'],
            [name, value]
                ]);

                var options = {
                    width: 400, height: 120,
                    redFrom: 90, redTo: 100,
                    yellowFrom: 75, yellowTo: 90,
                    minorTicks: 5
                };
                var cont = document.getElementById(id);
                var chart = new google.visualization.Gauge(cont);
                _gauges[name] = chart;
                chart.draw(data, options);
            });
        }

    },
    setValue: function (gaugeName, newValue) {
        var thisGauge = _gauges[gaugeName];
        if (thisGauge) {
            thisGauge.setCell(0, 1, newValue);
            //var tmp = Object.create(google.visualization.Gauge, thisGauge);
            //tmp.setCell(0, 1, newValue);
        }
    }
4

1 に答える 1

1

さて、2つのこと:

  1. これらの「ゲージ」オブジェクトの1つが実際に正しく配列に配置されている場合、それを元に戻すと、無傷で表示され、直接使用できます。「キャスト」は必要ありません。
  2. リンクしたドキュメントによると、「setCell」メソッドはありません:-)
于 2012-06-01T15:48:35.900 に答える