【问题标题】:Save data in Factory, take that data in controller在工厂中保存数据,在控制器中获取数据
【发布时间】:2016-12-02 18:49:20
【问题描述】:

我的代码有问题。

这是我的工厂代码:

.factory('shareDataService', function() {
    var sharedData = {};

    sharedData.shareData = function(dateFrom, dateTo) {
        var from = dateFrom;
        var to = dateTo;
        alert(from + to);
    };
    return sharedData;
})

这是我的控制器:

.controller('getFormDataCtrl', ['$rootScope','$scope', '$http', 'shareDataService', function ($rootScope,$scope, $http, shareDataService) {
  $scope.getFromBase = function () {
    shareDataService.shareData($scope.dateFrom, $scope.dateTo)       
  }

  $scope.bookingFormSubmit = function (){
    var array = {
        "from": ''// i want put dateFrom HERE,
        "to": '',// i want put dateTo HERE
        "yacht": $rootScope.yacht_id,
        "customer": {
            "fistname": $scope.firstname,
            "lastname": $scope.lastname,
            "birthday": $scope.birthday,
            "phone": $scope.phone,
            "email": $scope.email,
            "country": $scope.country,
            "city": $scope.city
        }
    }
  }}])

这个页面是建立在 symfony2 上的。我们使用 sumfony2 表格。 在第一个表格中,客户选择从和到的日期。有一个按钮“getFromBase()”

我想将这些数据保存在某个地方以备日后使用。

另一个表单在另一个 ui-view 中。 有简单的客户文本输入(姓名、姓氏等) 单击“bookingFormSubmit()”时,我会从此表单中获取全部数据。 我需要从我的工厂添加这些数据(这两个变量)并在 Json 中创建一个对象。

【问题讨论】:

    标签: javascript angularjs controller factory


    【解决方案1】:

    该服务中的实际数据有点过于私密。您需要稍微扩大范围并提供访问器。

    服务

    .factory('shareDataService', function() {
        var sharedData = {};
        var from, to;
    
        sharedData.getSharedData = function ()
        {
          return {from: from, to: to};
        };
    
        sharedData.shareData = function(dateFrom, dateTo) {
            from = dateFrom;
            to = dateTo;
        };
    
        return sharedData;
    })
    

    用法

    .controller('getFormDataCtrl', ['$rootScope','$scope', '$http', 'shareDataService', function ($rootScope,$scope, $http, shareDataService) {
      $scope.getFromBase = function () {
        shareDataService.shareData($scope.dateFrom, $scope.dateTo)       
      }
    
      //NEW
      var data = shareDataService.getSharedData;
    
      $scope.bookingFormSubmit = function (){
        var array = {
            "from": data.from, //NEW
            "to": data.to,     //NEW
            "yacht": $rootScope.yacht_id,
            "customer": {
                "fistname": $scope.firstname,
                "lastname": $scope.lastname,
                "birthday": $scope.birthday,
                "phone": $scope.phone,
                "email": $scope.email,
                "country": $scope.country,
                "city": $scope.city
            }
        }
      }}])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-06
      • 2021-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多