Я пытаюсь загрузить диаграмму (библиотека высоких карт) через angular
ngRoute
, но я не могу отобразить диаграмму.
JS - это моя конфигурация
var app = angular.module('myApp', [
'ngRoute'
]);
app.config(function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'some.html',
controller: 'MainCtrl'
})
.when('/contacts/:_id', {
templateUrl: 'contacts/some.html',
controller: 'SecondCtrl'
})
.otherwise({
redirectTo: '/'
});
});
JS - это мои контроллеры
app.controller('MainCtrl', ['$scope', function($scope) {
// some code here
}]);
app.controller('SecondCtrl', ['$scope', function($scope) {
//some code here
// drawing chart function
$(function () {
$('#container').highcharts({
//rest of the code
}]);
HTML//contacts/some.html страница
Нет ошибок в консоли, хотя диаграмма не загружается
Загрузка на главной странице - index.html только если написать
<div ng-controller="SecondCtrl">
<div id="container"></div>
</div>
Вы можете попытаться создать директиву "диаграмма" и использовать $ element в функции ссылки, чтобы инициировать объект Highchart. Что-то, как показано ниже:
app.directive("chart", function () {
return {
template: '<div id="chartContainer" style="height: 500px; min-width: 310px; max-width: 1024px; margin: 0 auto"></div>',
restrict: 'E',
scope: {
data: "=" // two way binding
},
replace: true,
controller: 'CustomCtrl',
link: function ($scope, element, $attrs) {
var mapChart = $(element).highcharts('Area', {
chart: {
renderTo: $(element).attr('id')
},series: [
{
name: 'Countries',
mapData: mapData,
color: '#E0E0E0',
enableMouseTracking: false
},/* so on */
И на вашей странице html добавить строку ниже
<div class="container" ng-controller="CustomCtrlas customCtrl">
<chart class="container" data='customCtrl.chartData'>
</div>
Позвольте мне знать, если это помогает