親スコープのコレクションがモーダルから保存された情報で更新されるようにする方法を見つけるのに最も苦労しています。
親にはイベントスピーカーのコレクションがあり、モーダルは 1 つのスピーカーをイベントに追加します。モーダルの [OK] ボタンをクリックすると、新しいスピーカーがページに追加されます。
データは保存され、モーダルは閉じますが、ページを更新しない限りモデルは更新されません。
スピーカーのコレクションを更新するコントローラー メソッドを次に示します。 $scope.speakers
ページ内の繰り返しオブジェクトにバインドされます。
$scope.updateSpeakersList = function () {
factory.callGetService("GetSpeakers?eventId=" + $scope.event.eventId)
.then(function (response) {
var fullResult = angular.fromJson(response);
var serviceResponse = JSON.parse(fullResult.data);
$scope.speakers = serviceResponse.Content;
LogErrors(serviceResponse.Errors);
},
function (data) {
console.log("Unknown error occurred calling GetSpeakers");
console.log(data);
});
}
これは、モーダルが前のメソッドを呼び出してページを更新するという約束です。
$scope.openModal = function (size) {
var modalInstance = $modal.open({
templateUrl: "AddSpeakerModal.html",
controller: "AddSpeakerModalController",
size: size,
backdrop: "static",
scope: $scope,
resolve: {
userId: function() {
return $scope.currentUserId;
},
currentSpeaker: function () {
return ($scope.currentSpeaker) ? $scope.currentSpeaker : null;
},
currentSessions: function () {
return ($scope.currentSpeakerSessions) ? $scope.currentSpeakerSessions : null;
},
event: function () {
return $scope.event;
},
registration: function() {
return $scope.currentUserRegistration;
}
}
});
modalInstance.result.then(function (savedSpeaker) {
$scope.savedSpeaker = savedSpeaker;
$scope.updateSpeakersList();
}, function () {
console.log("Modal dismissed at: " + new Date());
});
};
モデルが更新されないのはなぜですか?