我正在使用Angular Bootstrap,實際上我正在嘗試使用模態正確更新我的模型。Angular Bootstrap模態綁定問題
這裏是非常簡單的代碼:
控制器:
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',這些綁定會在值更改時自動更改。據我可以看到'房間'對象是通過你的函數調用者可能使用範圍對象。爲了防止這種情況,您可以創建一個獨立的範圍變量(以處理手動操作中的更改)。 –
我使用'vm'格式,而不是'$ socpe'。謝謝 –
這是同樣的事情,而不是'$ scope'你的綁定對象被命名爲'vm'。這不會更改摘要循環和綁定方法。 –