Угловой типError не может читать свойство "then" неопределенного

64
6

У меня есть функция с именем crop

$scope.crop = function (id) {
var options = {
template: "templates/polaroids_edit_crop.html",
url: PolaroidsService.getPolaroid(id).polaroid,
width: 300,
height: 300
};

$jrCrop.crop(options).then(function (canvas) {
PolaroidsService.setCropped(id, canvas.toDataURL());
});
};

Но когда я вызываю эту функцию, я получаю ошибку в этой строке:

$jrCrop.crop(options).then(function (canvas)

который содержит:

TypeError: Cannot read property 'then' of undefined
at Scope.$scope.crop (polaroids_edit.js:51)
at $parseFunctionCall (ionic.bundle.js:21044)
at ionic.bundle.js:53458
at Scope.$eval (ionic.bundle.js:23100)
at Scope.$apply (ionic.bundle.js:23199)
at HTMLButtonElement.<anonymous> (ionic.bundle.js:53457)
at HTMLButtonElement.eventHandler (ionic.bundle.js:11713)
at triggerMouseEvent (ionic.bundle.js:2863)
at tapClick (ionic.bundle.js:2852)
at HTMLDocument.tapTouchEnd (ionic.bundle.js:2975)

$jrCrop.crop(options) выполняет следующие действия:

crop: function (options) {
options = this.initOptions(options);

var scope = $rootScope.$new(true);

ionic.extend(scope, options);

$ionicModal.fromTemplateUrl(template, {
scope: scope,
animation: 'slide-in-up'
}).then(function (modal) {
scope.modal = modal;

return scope.modal.show().then(function () {
return (new jrCropController(scope)).promise.promise;
});
});
}

Я должен ждать, пока шаблон будет загружен, и только если он будет загружен, можно вернуть модальный. Как я могу это решить?

спросил(а) 2021-01-27T20:01:57+03:00 5 месяцев, 4 недели назад
1
Решение
89

Я думаю, вы должны вернуть результат $ionicModal.fromTemplateUrl:

crop: function(options) {
options = this.initOptions(options);

var scope = $rootScope.$new(true);

ionic.extend(scope, options);

return $ionicModal.fromTemplateUrl(template, {
scope: scope,
animation: 'slide-in-up'
}).then(function(modal) {
scope.modal = modal;
return scope.modal.show().then(function() {
return (new jrCropController(scope)).promise.promise;
});
});
}

ответил(а) 2021-01-27T20:01:57+03:00 5 месяцев, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема