У меня есть медиа-список, когда я нажимаю на элемент, который я хочу открыть ngDialog и передаю модель в ngDialog, я прочитал документацию и блог, но все они используют $ scope для передачи модели или данных, а не контроллера как (vm). как я могу использовать vm для передачи данных контроллеру ngDialog и как я могу вызвать родительский vm ($ parent. $ scope) из контроллера ngDiloag в vm (Controller as) case
вот мой код (упрощенная версия)
(function () {
'use strict';
angular
.module('app.media')
.controller('mediaController', Controller);
Controller.$inject = ['$filter', 'ngTableParams', '$rootScope', '$http', '$log', '$uibModal', 'ngDialog', 'toaster', 'mediaDataService'];
function Controller($filter, ngTableParams, $rootScope, $http, $log, $uibModal, ngDialog, toaster, mediaDataService) {
var vm = this;
vm.media = {};
activate();
function activate() {
vm.updateMedia = function () {
mediaDataService.updateMedia(vm.media).then(function (res) {
toaster.pop('success', 'ویرایش فایل با موفقیت انجام شد', 'ویرایش فایل')
})
}
vm.openUpdateDialog = function (media) {
//i want to use vm.media in opening dialog
vm.media = media;
ngDialog.open({
template: 'media/edit'
, className: 'ngdialog-theme-default'
, controller: 'updateMediaController',
//i had used data to pass data to new controller and used ngDialogData in my opening template to access media ,
//the probelm with this case is i cant access parrent controller(the controller that is openin dialog) from DngDialog
//opened Controller(because i want to run parrent controller updateMedia function when user click update in opened dialog)
//**commented out - not usefull **//
//data:media
})
}
}
}
})();
любое предложение? Спасибо
попробуй это:
Если вы используете контроллер с отдельной службой $ scope, этот объект будет передан в $ scope. $ Parent param: см. Это для получения дополнительной информации
ngDialog.open({
template: 'media/edit',
className: 'ngdialog-theme-default',
controller: 'updateMediaController',
scope:$scope
})