ngDialog — всплывающее окно не обновляет переменную области видимости

Я обновляю одну переменную области действия из всплывающего окна ngDialog.

Вид :

<input type="radio"  name="file_selector" value={{file.id}} ng-model="selected_file.id" ></input>
 

controller.js

 $scope.selected_file   = {'id' : '22'};

Если у меня есть вышеуказанное представление в не всплывающем HTML, обновления ng-модели и изменения представления.

нгдиалог:

$scope.openUploadPopup = function() {
		ngDialog.open({
			template: 'partials/upload.html',
			controller: 'notificationController',
			className: 'ngdialog-theme-default',
			scope: $scope
			});
} 

Редактировать: Plunker: http://plnkr.co/edit/8TUtwixKwvVaycDuvHd9?p=preview


person Rakesh    schedule 06.04.2015    source источник
comment
Можете ли вы создать plunker?   -  person ramamoorthy_villi    schedule 06.04.2015
comment
Планкер: plnkr.co/edit/8TUtwixKwvVaycDuvHd9?p=preview   -  person Rakesh    schedule 06.04.2015
comment
Ваш плунжер не работает. Это проблема?   -  person Re Captcha    schedule 06.04.2015
comment
Попробуйте сейчас, мой планк не обновлялся/модифицировался. Я заморозил его. Если вы выберете переключатель ( Нажмите, чтобы изменить значение ), значение обновится. Ссылка click создает ngDialog, содержащий другую кнопку-переключатель ( Click to change value - 2 ), отсюда обновление не происходит, даже если область действия установлена.   -  person Rakesh    schedule 06.04.2015


Ответы (1)


я изменил ваши файлы, работает для меня.

HTML:

<html>

  <head>
    <script src="https://code.angularjs.org/1.4.0-beta.6/angular.js"></script>
    <script  src="http://likeastore.github.io/ngDialog/js/ngDialog.min.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body ng-app="notifications_web_portal" ng-controller="notificationController">
    <div ng-view>
    <h1>Hello Plunker!</h1>
      <span> File selected : {{selected_file.id}}</span>
      <a href='javascript:void(0)' ng-click="openUploadPopup()" >Open Dialog</a>
      </div>
  </body>

</html>

JS :

// Code goes here
var notifApp = angular.module('notifications_web_portal', ['ngDialog']); 

notifApp.controller('notificationController', function($scope, $rootScope, $window , ngDialog) {
  $scope.openUploadPopup = function() {

    ngDialog.open({
      template: '<input type="radio"  name="file_selector" value="87" ng-model="selected_file.id" ></input>',
      controller: 'notificationController',
      plain: true,
      className: 'ngdialog-theme-default',
      scope: $scope
      });
  }
});

Сделаны изменения:

  • plain: true добавлено
  • notifApp.controller('notificationController',......
person ramamoorthy_villi    schedule 06.04.2015
comment
В реальном коде я не могу использовать plain: true, так как код достаточно большой и не может быть отправлен в виде строки из соображений удобства обслуживания. - person Rakesh; 06.04.2015
comment
вы должны использовать plain: true, в противном случае создайте файл externalTemplate.html, добавьте, например, этот шаблон: 'externalTemplate.html', - person ramamoorthy_villi; 06.04.2015
comment
Да, есть идеи, почему мне нужно объявлять $scope.selected_file = {'id' : ''}; внутри функции, а не где-либо в области действия контроллера.. скажем, первая строка в контроллере. В последнем случае это не работает. - person Rakesh; 06.04.2015