[AngularJS]$scope.param 无法被识别功能

发布时间: 2017/4/16 20:40:12
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

如下,script.js 有一个脚本︰

var app = angular.module("myModule", []);
app.controller('highchart', function($scope, chart) {

$scope.addchart = function() {
    console.log($scope.param);// print undefined !!!!!!!!!!!!!!!!!!!!!!!!
    chart.addChartToUI($scope.param);
}

$scope.generate = function() {

    $scope.param=[];
    for (var i = 0; i < 12; i++) {
        $scope.param[i] = Math.random();
    }
    console.log($scope.param);// print some number
}
});

我还有另一个 js 文件为 follwos:

app.factory('chart', function() {
return {
    addChartToUI : function(paramsArr) {
        return Highcharts.chart('container', {

            xAxis : {
                categories : [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
                        'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ]
            },

            series : [ {
                data : paramsArr
            } ]
        });
    }
};

});

此外我的 html 代码如下所示︰

<html>
<head>
< Script src="javascript/angular.js">

</Script>
<script src="https://code.highcharts.com/highcharts.js"></script>
<Script src="javascript/script.js"></Script>
  <script src="javascript/chartUtil.js"></script>

   </Script>
    <title>Insert title here</title>
   </head>
   <body ng-app="myModule">

    <div ng-controller="highchart">
    <button id="b1" type="button" ng-click="generate()"      title="sssss">dddddddd</button>
</div>
</br>
</br>
</br>
 <div ng-controller="highchart">
    <button id="b2" type="button" ng-click="addchart()" />
    </br> </br>
    <div id="container">Placeholder for chart</div>

</div>

现在我试图做是第一次调用生成的按钮创建的 b1 创建参数,然后我会调用 addchart 由布敦 b2 画图表,但当我做这里面的参数生成,但它未定义的 addchart 有没有什么办法,我可以分享在这两个函数参数?

解决方法 1:

演示

好的所以基本上,你想要你的两个控制器互相交谈。而您的代码可能你现在在做的方式工作,它将将来产生很多问题。所以这里是更好的方式,我知道,做什么事角。

首先,每个控制器应该只用于特定的模板,您不应该使用控制器为多个模板它应该是严格的 1 模板 1 控制器。

现在,为你分担到多个控制器对象,您需要创建一个服务来共享这些控制器通过。

app.service('sharedService',function(){

  this.array = [];

});

app.controller('MainController', function(sharedService){

  sharedService.array = [1,2,3,4];

});

app.controller('AnotherController', function(sharedService){

  this.array = sharedService.array;

});

请看看我的演示,了解整个代码和它是如何工作

赞助商