Я работаю с Angular Bootstrap и на самом деле пытаюсь правильно обновить свою модель с помощью Modal.
Вот очень простой код:
контроллер:
function open(room) {
var roomModal = $uibModal.open({
templateUrl: 'room-modal.html',
controller: 'RoomModalController',
controllerAs: 'modal',
resolve: {
room: room
}
});
roomModal.result.then(function (response) {
RoomsService.update({
roomId: response._id
}, response).$promise (etc...);
});
}
Модальный контроллер:
var vm = this;
vm.room = room;
vm.save = function () {
$uibModalInstance.close(vm.room);
};
vm.cancel = function () {
$uibModalInstance.dismiss('cancel');
};
По сути, я разрешаю комнату, чтобы получить некоторую информацию о ней, а затем, если необходимо, я хочу обновить некоторую информацию о комнате в модальном окне.
Он работает нормально, если я не хочу обновлять некоторую информацию и нажимаю «закрыть».
Что происходит: если я обновил некоторую информацию, а затем нажал «закрыть», информация не была обновлена в базе данных (ОК), но была обновлена в основном представлении... Поскольку Angular привязывает модальную информацию к основному виду ...
Это довольно странно, потому что я передаю эту информацию в отдельную область (vm), и если я не нажму кнопку «Сохранить», я не должен ожидать такого поведения...
Что я здесь делаю не так?!?
$scope.objname
) в качествеng-models
для ваших входных данных, эти привязки автоматически изменяются при изменении значения. Насколько я вижу, объектroom
передается через ваши вызывающие функции, которые, возможно, используют объект области. Чтобы предотвратить это, вы можете создать отдельную переменную области (для обработки изменений при ручном действии). - person daan.desmedt   schedule 07.02.2017vm
, а не$socpe
. Спасибо - person Ayeye Brazo   schedule 07.02.2017$scope
ваш объект привязки просто называетсяvm
. Это не меняет цикл дайджеста и методологию связывания. - person daan.desmedt   schedule 07.02.2017ng-models
— это тот, который я передаю изresolve
, чтобы показать текущее значение. Затем, если мне нужно обновить один, я делаю это, иначе нет... Бывает, я обновляю значение, а затем решаю удалить свои изменения, поэтому я нажимаю закрыть. Я ожидаю, что все будет как прежде... - person Ayeye Brazo   schedule 07.02.2017<input type="text" ng-model="modal.room.number">
ничего больше.. . - person Ayeye Brazo   schedule 07.02.2017