【问题标题】:AngularJS: Get Data From Controller In ServiceAngularJS:从服务中的控制器获取数据
【发布时间】:2017-09-28 01:40:40
【问题描述】:

有大量关于从服务获取数据并在控制器中使用数据的信息,但我在互联网上搜索并没有找到有关如何执行此操作的示例或说明。如果我有一个基本控制器:

app.controller('myController', function($scope) {
  $scope.myObject = [
    {
      x = 1;
      y = 2;
    },
    {
      x = 3;
      y = 4;
  }]
});

我想编写一个服务,从控制器获取对象“myObject”,更改对象,然后将其发送回控制器。我了解如何编写服务并将信息传递给控制器​​,但是服务如何访问对象“myObject”?

【问题讨论】:

    标签: angularjs service controller


    【解决方案1】:

    你必须:

    1) 创建修改数据的服务和函数。 3)在您的控制器中注入服务。 4) 调用你的服务函数。

    看看这个example我为你写的。

    你已经得到了控制器:

    .controller("MyController",function($scope, ModifyDataService) {
      $scope.data = "foo";
      $scope.dataModified = null;
      $scope.modifyData = function() {
            $scope.dataModified = ModifyDataService($scope.data);
        }
    })
    

    以及修改数据的服务:

    .service("ModifyDataService", function() {
        return function(data) {
            /** Reverse String **/
        if(typeof data !== 'string') throw 'Data must be string';
        return Array.from(data).reverse().join("");
      };
    })
    

    【讨论】:

      【解决方案2】:

      如果您的用例只涉及更改对象,那么也许服务方法就是答案。

      app.controller('myController', function($scope, myService) {
        $scope.myObject = [{
          x = 1;
          y = 2;
        }, {
          x = 3;
          y = 4;
        }];
      
        /* Option 1, transform object in place. */
        myService.changeObject( $scope.myObject ); 
      
        /* Option 2, replace object. */
        $scope.myObject = myService.changeObject( $scope.myObject );
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-13
        • 2015-11-05
        • 1970-01-01
        相关资源
        最近更新 更多