javascript - 如何将数组从服务函数传递到 Controller (AngularJs)中的范围?

标签 javascript angularjs

我有一个如下所示的 Angular 服务:

    .service('shareDataService', function() {
            var myXi = [];
            var myYi = [];

            var addXi = function(newObj) {
                myXi = newObj;
            }

            var addYi = function(newObj) {
                myYi = newObj;
            }

            var getPlot = function() {
                var a = [];

                for (var i = 0; i < myXi.length; i++) {
                    a.push([myXi[i], myYi[i]]);
                }

                return a;
            }

            return {
                addXi: addXi,
                addYi: addYi,
                getPlot: getPlot
            };
    });

我有 Angular Controller :

    .controller('plotController', function($scope, shareDataService) {
            $scope.getYo = function() {
                    return shareDataService.getPlot();
            };
            $scope.lineChartData = [
                    $scope.getYo()
            ];
    });

我需要将一个值从 $scope.getYo 发送到 $scope.lineChartData(它将是一个数组)。我怎样才能做到这一点?我试过那样,但如果我在 HTML 中调用 $scope.lineChartData,我什么也得不到。 我需要的数据是

    [
            [
                    [2,0],
                    [3,1],
                    [5,4]
            ]
    ];

更新:

请参阅我在 http://laravel.io/bin/6LVej 中的完整解释.谢谢

最佳答案

众所周知,工厂和服务基本上用于共享数据。但两者有不同的用途和意义。基本区别是 Factory 应该总是返回 Object 而 Service 应该返回 Function(JS 中的构造函数)。以下是可能对您的情况有帮助的代码片段。

    var app = angular.module('plunker', []);

app.service('arrayService', function() {
  return function() {
    this.getArray = function() {
      return [1, 2, 3, 4, 5];
    }
  }
})
app.factory('arrayFactory', function() {
  return {
    getArray : function() {
      return [9,8,7,6,5];
    }
  }
})
app.controller('MainCtrl', ['$scope','arrayService','arrayFactory',
  function($scope, arrayService,arrayFactory) {
    var ary = new arrayService();
    $scope.serviceArrayObject = ary.getArray();
     $scope.factoryArrayObject = arrayFactory.getArray()

  }
]);

Here is the plunker for basic difference 我们如何使用服务和工厂

关于javascript - 如何将数组从服务函数传递到 Controller (AngularJs)中的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29763696/

相关文章:

javascript - Angular 指令 - 无法访问 TreeView 中的子节点或孙节点

javascript - 回调函数在 Service 中使用 $timeout 不会只调用一次

javascript - 如何显示在输入类型文件中选择了哪个文件?

javascript - 在 ng-click 函数中传递参数不起作用

javascript - Angular JS表中的嵌套ng-repeat

javascript - 选择自定义指令和 ng-change

javascript - 在 React JS 中,什么时候应该使用 store 还是直接操作 View 的状态?

javascript - asmx/js 的缓存不持久

javascript - 在 typescript 中指定 keyof 类型

javascript - 使用 .$on 测试指令