Я создаю приложение в Angular с использованием ионной структуры. Я пытаюсь передать переменную scope cropImgSrc в модальную область видимости, но она, похоже, не работает. Вот мой код
Код контроллера
angular.module('myApp').directive('addprofile',function(){
return{
restrict: 'E',
templateUrl: 'client/modules/add-profile-details/add-profile.html',
controllerAs: 'addProfileController',
controller: function($scope,$reactive,$ionicModal){
var vm = this;
$reactive(this).attach($scope);
this.helpers({
imgSrc: function(){
return '';
},
cropImgSrc: function(){
return '';
}
});
$ionicModal.fromTemplateUrl('client/modules/add-profile-details/crop-image-modal.html', {
scope: $scope,
animation: 'slide-in-up'
}).then(function(modal) {
vm.modal = modal;
});
this.addAvatar = function(files){
if (files.length > 0) {
var reader = new FileReader();
reader.onload = function(e){
$scope.$apply(function(){
vm.cropImgSrc = e.target.result;
vm.modal.show();
});
};
reader.readAsDataURL(files[0]);
}
else {
this.imgSrc = undefined;
}
};
}
} });
И мой шаблон выглядит следующим образом
<ion-view title="Crop Avatar">
<div class="modal">
<div class="bar bar-header bar-positive">
<h1 class="title">Your Avatar</h1>
</div>
<ion-content>
<img ng-src="addProfileController.cropImgSrc">
</ion-content>
</div>
Может ли кто-нибудь направить меня туда, где я ошибаюсь?
Пожалуйста, замените все "vm" на $ scope и замените модальный код следующим образом:
<ion-view title="Crop Avatar">
<div class="modal">
<div class="bar bar-header bar-positive">
<h1 class="title">Your Avatar</h1>
</div>
<ion-content>
<img ng-src="{{cropImgSrc}}">
</ion-content>
</div>
</ion-view>
Так как контроль внутри модального лежит теперь в $ scope, можете ли вы попробовать изменить эту строку vm.modal = modal; с $ scope.modal = modal; Также один вариант - распечатать журналы и проверить значения.
Сначала замените <img ng-src"addProfileController.cropImgSrc">
на <img ng-src="addProfileController.cropImgSrc">