无法将 angular ui 模态值更新回主叫屏幕
Not able to update angular ui modal values back to the caller screen
我试图在单击列表元素时调用 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());
});
};
但是在 modalInstance.result.then(function(){}) 方法中无法识别 modalCtrl。我不知道我还能做些什么来更新来电屏幕上的列表。任何帮助将不胜感激。这里是 plunker http://plnkr.co/edit/DR6Gadoh3rXegCrTOTzB?p=preview
打开模态时将数组元素索引与当前元素一起传递,如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>
代码
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());
});
};
希望对您有所帮助,谢谢。
我试图在单击列表元素时调用 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());
});
};
但是在 modalInstance.result.then(function(){}) 方法中无法识别 modalCtrl。我不知道我还能做些什么来更新来电屏幕上的列表。任何帮助将不胜感激。这里是 plunker http://plnkr.co/edit/DR6Gadoh3rXegCrTOTzB?p=preview
打开模态时将数组元素索引与当前元素一起传递,如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>
代码
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());
});
};
希望对您有所帮助,谢谢。