无法将角度ui模态值更新回调用者屏幕

时间:2015-02-28 19:55:57

标签: angularjs modal-dialog angularjs-scope

当我点击列表的元素时,我试图调用angularUI模式。我可以成功加载模态,更改模态中的值,然后返回到调用者屏幕。但我不知道如何在呼叫者屏幕上更新列表。我尝试了各种各样的事情,比如更新调用者屏幕控制器的init()方法,但是在模态关闭时没有调用。我试图在控制器内部分配变量,但这也不起作用。我的猜测是需要在下面的方法中完成一些事情。



  modalInstance.result.then(function(personModified) {
    $log.info('personModified = ' + personModified.name + ' Finished at: ' + new Date());
  }, function() {
    $log.info('Modal dismissed at: ' + new Date());
  });
  };




尝试循环,如下所示:



modalInstance.result.then(function(personModified) {

  for (int i = 0; i < modalCtrl.people.length; i++) {
    if (modalCtrl.people[i]._id === personModified._id) {
      modalCtrl.people[i] = personModified;
    }
  }

  $log.info('personModified = ' + personModified.name + ' Finished at: ' + new Date());
}, function() {
  $log.info('Modal dismissed at: ' + new Date());
});
};
&#13;
&#13;
&#13;

但是在modalInstance.result.then(function(){})方法中无法识别modalCtrl。我不知道如何在呼叫者屏幕上更新我的列表。任何帮助将非常感激。这是plunker http://plnkr.co/edit/DR6Gadoh3rXegCrTOTzB?p=preview

1 个答案:

答案 0 :(得分:1)

在打开模态modalCtrl.open('lg', person, $index)时传递数组元素索引和当前元素,当成功调用模态时,我们可以更新该特定索引的this.people数组。

<强> HTML

<div ng-repeat="person in modalCtrl.people">
    <a ng-click="modalCtrl.open('lg', person, $index)" class="undecorated-link">
        <p class="text-center">{{person.name}}</p>
    </a>
</div>

<强> CODE

modalCtrl.open = function(size, selectedPerson, index) {

    var modalInstance = $modal.open({
        templateUrl: 'myModalContent.html',
        controller: 'ModalInstanceCtrl',
        size: size,
        scope: $scope,
        resolve: {
            person: function() {
                return angular.copy(selectedPerson);
            }
        }
    });

    modalInstance.result.then(function(personModified) {
        $log.info('personModified = ' + personModified.name + ' Finished at: ' + new Date());
        modalCtrl.people[index] = personModified;
    }, function() {
        $log.info('Modal dismissed at: ' + new Date());
    });
};

Working Plunkr

希望这可以帮助你,谢谢。