angular,将对象推送到父数组(模态)

时间:2015-09-11 08:25:36

标签: javascript angularjs bootstrap-modal

我有一个模态控制器,就像这样

angular.module('myApp').controller('ModalDemoCtrl', function ($scope, $modal, $log) {

  $scope.arrayList = [];

  $scope.newItem = function () {
    var modalInstance = $modal.open({
        templateUrl: 'newItem.html',
        controller: 'newItemCtrl',
        windowClass: 'app-modal-window',
        backdrop: 'static',
        resolve: {
        }
    });
    modalInstance.result.then(function (editable) {

        console.log($scope.arrayList);

    }, function () {
        $log.info('Modal dismissed at: ' + new Date());
    });
};

  $scope.newArrayItem = function () {
    var modalInstance = $modal.open({
        templateUrl: 'newArrayItem.html',
        controller: 'newArrayCtrl',
        windowClass: 'app-modal-window',
        backdrop: 'static',
        resolve: {
        }
    });
    modalInstance.result.then(function (editable) {

        $scope.arrayList.push(editable);

    }, function () {
        $log.info('Modal dismissed at: ' + new Date());
    });
};

当我第一次打开模态窗口时,它是创建一个'newItem',然后在该窗口内我打开另一个模态来创建'ArrayItems',当创建一个arrayItem时(当该模态关闭时)我想推送该项目到我的$scope.arrayList,并重复,当创建所有arrayItems时,我也关闭'newItem'模式,这是我想要到达$scope.arrayList的地方,但是当我尝试记录它时,它是空。

所以我想我需要将对象推送到父作用域,我该怎么做?

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,不知道它是否是最佳的,但现在就是。

我无法启动我所在的阵列,我不得不在第一个模态的控制器内启动

angular.module('myApp').controller('newItemCtrl', function ($scope, $modalInstance) {

$scope.arrayList = [];

  $scope.editable = {
    arrayList: $scope.arrayList
  };

  $scope.ok = function () {
    $modalInstance.close($scope.editable);
  };

  $scope.cancel = function () {
    $modalInstance.dismiss('cancel');
  };
});

正如您所看到的,我还必须将其包含在我的可编辑对象中,以便在关闭模式时传递它。

然后在关闭第二个模态时,我在那里创建了arrayList项目,我只是像以前一样按$scope.arrayList.push($scope.editable);

最后,当我关闭第一个模态时,我可以记录我的arrayList console.log(editable);

虽然这个arrayList将位于另一个对象(可编辑的第一个模态)中,但它现在还不错。