1

我正在尝试将keen.io JS SDK 与angularJS 应用程序集成。我写事件没有任何问题,但我在绘制图表时遇到了麻烦。

我使用资源管理器为图表生成 javascript,但必须进行一些修改才能使其与角度兼容。不幸的是,当我到达实际调用client.draw(或者在我的情况下是keenClient.draw)的行时,我在keen.min.js文件中抛出一个错误,说“this.el(..).appendChild()不是一个函数”。

我将实际的 div 传递给该方法,而不仅仅是一个文本字符串,我可以在 JS 调试器中看到正在找到该 div。敏锐客户端也被实例化,并且查询似乎没有错误地创建。所以我不确定发生了什么。这是我的控制器的样子:

'use strict';

angular.module('myApp.view2', ['ngRoute'])

.config(['$routeProvider', function($routeProvider) {
  $routeProvider.when('/view2', {
    templateUrl: 'view2/view2.html',
    controller: 'View2Ctrl'
  });
}])

.controller('View2Ctrl', ['$scope', function($scope, $document) {
   // write hit to keen
  var keenClient = new Keen({
    projectId: window.keenio_project_id, // String (required always)
    writeKey: window.keenio_write_key,   // String (required for sending data)
    readKey: window.keenio_read_key      // String (required for querying data)

    // protocol: "https",         // String (optional: https | http | auto)
    // host: "api.keen.io/3.0",   // String (optional)
    // requestType: "jsonp"       // String (optional: jsonp, xhr, beacon)
  });

    var pageHit = {
        "action": "loaded",
        "page": "view2"
    };

    keenClient.addEvent("pagehits", pageHit, function(err, res){
      if (err) {
          // there was an error!
          alert('Error sending keen.io stats');
      }
    });

     angular.element(Keen).ready(function (){

         var query = new Keen.Query("count", {
    eventCollection: "pagehits",
    groupBy: "page",
    interval: "hourly",
    timeframe: "this_3_days",
    timezone: "UTC"
  });

         var div = angular.element(document.getElementById("chart-wrapper"));

         keenClient.draw(query, div, 
             {
                 title: "Hits",
                 chartType: "columnchart"
             });

    });
}]);

我的看法很简单:

<div id="chart-wrapper" ng-controller="View2Ctrl"></div>

我正在使用 angular 1.4.8 导入keen.io 3.3.0 版。

在此先感谢您的任何建议。我对角度和敏锐.io都很陌生,所以我可能在这里遗漏了一些愚蠢的东西。

4

1 回答 1

1
于 2015-12-02T23:57:02.377 回答