我正在尝试将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都很陌生,所以我可能在这里遗漏了一些愚蠢的东西。