当我点击列表的元素时,我试图调用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;
但是在modalInstance.result.then(function(){})方法中无法识别modalCtrl。我不知道如何在呼叫者屏幕上更新我的列表。任何帮助将非常感激。这是plunker http://plnkr.co/edit/DR6Gadoh3rXegCrTOTzB?p=preview
答案 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());
});
};
希望这可以帮助你,谢谢。