Я пытаюсь выполнить двустороннюю привязку к строковой переменной на контроллере. Когда контроллер изменяет строку, она не обновляется сразу. Я уже запустил отладчик, и я знаю, что переменная vm.overlay.file изменена. Но он не обновляется в представлении ... он обновляется только в следующий раз, когда пользователь нажимает кнопку, которая запускает selectOverlayFile(), а затем представляет предыдущее значение vm.overlay.fileУгловая привязка строк не работает с ControllerAs vm
Здесь идет код :
(function() {
angular
.module("myapp.settings")
.controller("SettingsController", SettingsController);
SettingsController.$inject = [];
function SettingsController() {
var vm = this;
vm.overlay = {
file: undefined,
options: {
sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
destinationType: Camera.DestinationType.DATA_URL
}
};
vm.errorMessages = [];
vm.selectOverlayFile = selectOverlayFile;
vm.appMode = "photo";
vm.appModes = ["gif-HD", "gif-video", "photo"];
activate();
function activate() {
}
function selectOverlayFile() {
navigator.camera.getPicture(successOverlay, errorOverlay, vm.overlay.options);
}
function successOverlay(imageUrl) {
//If user has successfully selected a file
vm.overlay.file = "data:image/jpeg;base64," + imageUrl;
}
function errorOverlay(message) {
//If user couldn't select a file
vm.errorMessages.push(message);
}
}
})();
Спасибо!
Что вы подразумеваете под «контроллером, меняющим строку»? как контроллер меняет его? можете ли вы показать эту часть кода? – sdfacre
Я объяснил это плохо. Пользователь нажимает кнопку и запускает selectOverlayFile(). Затем он вызывает один из своих обратных вызовов. –