HighCharts未定义,因为Javascript文件中有多个Html页面

Ali*_*tos 11 html javascript html5 highcharts angularjs

我试图获得一个名为"容器"的div id,如下所示:

var chart = $(#container).highcharts();

当我通过我的html页面中定义的控制器调用时,它完美地工作.但是当我试图通过我的Html页面没有引用的另一个控制器调用此函数时,它无法正常工作.

那么,如何在其他html页面中关联的其他控制器中调用我的div?

例:

它工作并在我的控制器"main"中定义,它在我的html页面"main.html"中定义

    Item.Rest("datePerUser",null).then(function(totalDatePerUser){

        var objectDate = totalDatePerUser.data;

        var femDate = objectDate.Chart1Fem;
        var mascDate = objectDate.Chart1Masc;    

        loadDataChart1(mascDate, femDate);            

    });
Run Code Online (Sandbox Code Playgroud)

它不起作用,并在我的控制器"菜单"中定义,该菜单在我的html页面"menu.html"中定义

    PeriodItem.Rest("datePerUser_",Obj).then(function(datePerUserTeste){

                      var objectDate = datePerUserTeste.data;

                      newFemDate = objectDate.Chart1Fem;
                      newMaleDate = objectDate.Chart1Masc;    

                      loadDataChart1(newMaleDate, newFemDate);

                  }); 
Run Code Online (Sandbox Code Playgroud)

两者都调用了跟随功能

function loadDataChart1(dataMale, dataFem){

    var chartProfiles = $('#container').highcharts();

    obj_female =  JSON.parse('{ "data":' + dataFem + ' }');
    obj_male =  JSON.parse('{ "data":' + dataMale + ' }');

    chartProfiles.series[0].update(obj_female);    
    chartProfiles.series[1].update(obj_male);

} 
Run Code Online (Sandbox Code Playgroud)

仅仅是为了获取信息,我正在使用angularJS和Rest服务,从数据库获取数据,我有多个Html页面.

Sta*_*nko 3

对于您的情况来说,一个超级简单的选择是具有“loadDataChart1”功能的“通用”控制器。

//Step 1 
app.controller('CommonChartsController', function($scope) {
    $scope.createCharts = function (dataMale, dataFem) {    
      var chartProfiles = $('#container').highcharts();

      obj_female =  JSON.parse('{ "data":' + dataFem + ' }');
      obj_male =  JSON.parse('{ "data":' + dataMale + ' }');

      chartProfiles.series[0].update(obj_female);    
      chartProfiles.series[1].update(obj_male);
  };      
}
               
//Step 2
app.controller('MainController', function($scope, $controller) {

    $controller('CommonChartsController', {
        $scope: $scope               
    });

    Item.Rest("datePerUser",null).then(function(totalDatePerUser){
        var objectDate = totalDatePerUser.data;

        var femDate = objectDate.Chart1Fem;
        var mascDate = objectDate.Chart1Masc;    

        $scope.createCharts(mascDate, femDate);            
    });
}

//Step 3
app.controller('MenuController', function($scope, $controller) {

    $controller('CommonChartsController', {
        $scope: $scope               
    });

    PeriodItem.Rest("datePerUser_",Obj).then(function(datePerUserTeste){
      var objectDate = datePerUserTeste.data;

      newFemDate = objectDate.Chart1Fem;
      newMaleDate = objectDate.Chart1Masc;    

      $scope.createCharts(newMaleDate, newFemDate);
    }); 
}                     
               
               
Run Code Online (Sandbox Code Playgroud)