Heatmap.js Angularjs 指令
Heatmap.js directive for Angularjs
是否有 heatmap.js 的 angularJS 指令?
找不到任何东西,也无法让它工作
谢谢
=编辑=
无论是使用我的代码还是下面的代码(都有效),我都会收到此错误。我的问题实际上是我在凉亭中使用的 heatmap.js 版本。当我下载 fiddle 中使用的 min.js 时,一切正常。
TypeError: Cannot read property 'style' of null
at Object.heatmap.resize (http://localhost:56080/app/bower_components/heatmap.js/src/heatmap.js:363:74)
at Object.heatmap.init (http://localhost:56080/app/bower_components/heatmap.js/src/heatmap.js:386:20)
at Object.heatmap (http://localhost:56080/app/bower_components/heatmap.js/src/heatmap.js:331:14)
at Object.heatmapFactory.create (http://localhost:56080/app/bower_components/heatmap.js/src/heatmap.js:627:24)
at link (http://localhost:56080/app/js/directives/MainDirective.js:9:36)
heatmap.js
的简单包装指令
HTML
<div ng-app="myapp">
<div ng-controller="MyCtrl1">
<heat-map data="passed_data"></heat-map>
</div>
</div>
JS
var myApp = angular.module('myapp',[]);
myApp
.controller('MyCtrl1', function ($scope) {
// now generate some random data
var points = [];
var max = 0;
var width = 840;
var height = 400;
var len = 200;
while (len--) {
var val = Math.floor(Math.random()*100);
max = Math.max(max, val);
var point = {
x: Math.floor(Math.random()*width),
y: Math.floor(Math.random()*height),
value: val
};
points.push(point);
}
// heatmap data format
$scope.passed_data = {
max: max,
data: points
};
})
.directive('heatMap', function(){
return {
restrict: 'E',
scope: {
data: '='
},
template: '<div container></div>',
link: function(scope, ele, attr){
scope.heatmapInstance = h337.create({
container: ele.find('div')[0]
});
scope.heatmapInstance.setData(scope.data);
}
};
});
CSS
heat-map {
width: 840px;
height: 400px;
display: block;
}
heat-map div {
height: 100%;
}
JsFiddle - http://jsfiddle.net/jigardafda/utjjatuo/2/
heatmap.js例子参考link
http://www.patrick-wied.at/static/heatmapjs/example-minimal-config.html
jad-panda 的回答 () 真的很有帮助。
但是如果您不想在 css 中硬编码热图的大小并使用 ng-style
动态应用它们,则必须进行以下小的更改。
HTML
<div ng-style="heatMapStyle">
<heat-map data="passed_data"></heat-map>
</div>
控制器
只需将样式对象添加到$scope
like
$scope.heatMapStyle = {
"height": 100+ "px",
"width": 150+ "px"
};
控制器的其余部分与jad-panda的答案相同。
指令
.directive('heatMap', ['$timeout', function ($timeout) {
return {
restrict: 'E',
scope: {
data: '='
},
template: '<div container></div>',
link: function (scope, ele, attr) {
function init() {
scope.heatmapInstance = h337.create({
container: ele.find('div')[0]
});
scope.heatmapInstance.setData(scope.data);
}
//to ensure that the wrapping style is already applied
$timeout(init,0);
}
};
}])
$timout 对于确保在 AngularJs 的下一个摘要周期中初始化热图至关重要,而 ng-style
已经应用。
CSS
最后一个新 CSS:
heat-map {
position: relative;
width: 100%;
height: 100%;
}
heat-map div {
height: 100%;
}
刚刚找到 heatmap.js 的官方包装器,托管在同一个 github 存储库中。
可从以下网址下载:https://github.com/pa7/heatmap.js/blob/master/plugins/angular-heatmap/angular-heatmap.js
这里有解释:
https://www.patrick-wied.at/static/heatmapjs/plugin-angular-heatmap.html
是否有 heatmap.js 的 angularJS 指令?
找不到任何东西,也无法让它工作 谢谢
=编辑=
无论是使用我的代码还是下面的代码(都有效),我都会收到此错误。我的问题实际上是我在凉亭中使用的 heatmap.js 版本。当我下载 fiddle 中使用的 min.js 时,一切正常。
TypeError: Cannot read property 'style' of null at Object.heatmap.resize (http://localhost:56080/app/bower_components/heatmap.js/src/heatmap.js:363:74) at Object.heatmap.init (http://localhost:56080/app/bower_components/heatmap.js/src/heatmap.js:386:20) at Object.heatmap (http://localhost:56080/app/bower_components/heatmap.js/src/heatmap.js:331:14) at Object.heatmapFactory.create (http://localhost:56080/app/bower_components/heatmap.js/src/heatmap.js:627:24) at link (http://localhost:56080/app/js/directives/MainDirective.js:9:36)
heatmap.js
的简单包装指令HTML
<div ng-app="myapp">
<div ng-controller="MyCtrl1">
<heat-map data="passed_data"></heat-map>
</div>
</div>
JS
var myApp = angular.module('myapp',[]);
myApp
.controller('MyCtrl1', function ($scope) {
// now generate some random data
var points = [];
var max = 0;
var width = 840;
var height = 400;
var len = 200;
while (len--) {
var val = Math.floor(Math.random()*100);
max = Math.max(max, val);
var point = {
x: Math.floor(Math.random()*width),
y: Math.floor(Math.random()*height),
value: val
};
points.push(point);
}
// heatmap data format
$scope.passed_data = {
max: max,
data: points
};
})
.directive('heatMap', function(){
return {
restrict: 'E',
scope: {
data: '='
},
template: '<div container></div>',
link: function(scope, ele, attr){
scope.heatmapInstance = h337.create({
container: ele.find('div')[0]
});
scope.heatmapInstance.setData(scope.data);
}
};
});
CSS
heat-map {
width: 840px;
height: 400px;
display: block;
}
heat-map div {
height: 100%;
}
JsFiddle - http://jsfiddle.net/jigardafda/utjjatuo/2/
heatmap.js例子参考link
http://www.patrick-wied.at/static/heatmapjs/example-minimal-config.html
jad-panda 的回答 (
但是如果您不想在 css 中硬编码热图的大小并使用 ng-style
动态应用它们,则必须进行以下小的更改。
HTML
<div ng-style="heatMapStyle">
<heat-map data="passed_data"></heat-map>
</div>
控制器
只需将样式对象添加到$scope
like
$scope.heatMapStyle = {
"height": 100+ "px",
"width": 150+ "px"
};
控制器的其余部分与jad-panda的答案相同。
指令
.directive('heatMap', ['$timeout', function ($timeout) {
return {
restrict: 'E',
scope: {
data: '='
},
template: '<div container></div>',
link: function (scope, ele, attr) {
function init() {
scope.heatmapInstance = h337.create({
container: ele.find('div')[0]
});
scope.heatmapInstance.setData(scope.data);
}
//to ensure that the wrapping style is already applied
$timeout(init,0);
}
};
}])
$timout 对于确保在 AngularJs 的下一个摘要周期中初始化热图至关重要,而 ng-style
已经应用。
CSS
最后一个新 CSS:
heat-map {
position: relative;
width: 100%;
height: 100%;
}
heat-map div {
height: 100%;
}
刚刚找到 heatmap.js 的官方包装器,托管在同一个 github 存储库中。
可从以下网址下载:https://github.com/pa7/heatmap.js/blob/master/plugins/angular-heatmap/angular-heatmap.js
这里有解释: https://www.patrick-wied.at/static/heatmapjs/plugin-angular-heatmap.html