2016-11-02 6 views
0

Я новичок в ngDialog, и я пытаюсь отобразить данные ответа, полученные из моей службы, в ngDialog, мое всплывающее окно подходит, и я могу отображать статические данные, но когда я передаю данные : $ scope.myData, динамическое значение просто не заполняется, Пожалуйста, руководство, где я иду не так ... Ниже приведен код.Не удалось отобразить данные ответа в ngDialog

popup.html:

<div>hi how r u</div> 
<div>I am fine thank u</div> 

контроллер код:

paymentSearchApp.controller('paymentSearchCtrl', function (getXmlService,paymentSearchService,paymentSearchResponse,paymentDetailService,auditHistoryService,errorLogService,accountingEntryService, notesService,$scope, $q, ngDialog) { 
getXmlService.getXmlDatafunction().then(
    function(response){ 
    $scope.xmldata = response; 
    console.log($scope.xmldata); 
    ngDialog.open({ 
     template: 'showXml.html', 
     className: 'ngdialog-theme-default', 
     data: $scope.xmldata 
     }); 
    }, function(error){} 
) 
}); 

ответ

0

Вы довольно близко!

Вы действительно можете использовать ключ data для объекта, переданного в ngDialog.open, чтобы вводить данные в область ваших диалогов.
Однако объект данных не переопределяет потенциально уже существующие свойства области: он доступен в $scope.ngDialogData.

Например, учитывая следующий код:

ngDialog.open({ 
    template: 'dialogTemplate', 
    data: { 
    ip: res.data.origin 
    } 
}); 

Вы найдете ip информацию, в пределах вашего шаблона диалогового окна, со ссылкой на: {{ngDialogData.ip}}.

Для иллюстрации, проверьте фрагмент кода ниже:

var myApp = angular.module('myApp', ['ngDialog']); 
 

 
myApp.factory('PaymentSearchSvc', ['$http', function($http) { 
 
    return { 
 
    getXmlDataFunction: $http.get.bind($http, 'https://httpbin.org/ip') 
 
    }; 
 
}]); 
 

 
myApp.controller('PaymentSearchCtrl', ['$scope', 'ngDialog', 'PaymentSearchSvc', function($scope, ngDialog, paymentSearchSvc) { 
 
    $scope.process = function() { 
 
    paymentSearchSvc.getXmlDataFunction().then(function(response) { 
 
     ngDialog.open({ 
 
     template: 'dialogTemplate', 
 
     data: { 
 
      ip: response.data.origin 
 
     } 
 
     }); 
 
    }); 
 
    }; 
 
}]);
.text-primary { 
 
    color: steelblue; 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/ng-dialog/0.6.4/js/ngDialog.min.js"></script> 
 
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ng-dialog/0.6.4/css/ngDialog-theme-default.min.css"> 
 

 
<div ng-app="myApp"> 
 
    <div ng-controller="PaymentSearchCtrl"> 
 
    <button ng-click="process()">What's my IP?</button> 
 
    </div> 
 

 
    <script type="text/ng-template" id="dialogTemplate"> 
 
    <h1>Dialog content</h1> 
 
    <p> 
 
     Your IP address is: <span class="text-primary">{{::ngDialogData.ip}}</span> 
 
    </p> 
 
    </script> 
 
</div>

+0

Я очень ценю ваш ответ, его работа .. !!! –

0

Вы должны использовать контроллер для передачи данных для просмотра, так как я заметил, здесь вы не использовать контроллер в качестве ну, позвольте мне показать вам,

getXmlService.getXmlDatafunction().then(
    function(response){ 
    $scope.xmldata = response; 
    console.log($scope.xmldata); 
    ngDialog.open({ 
     template: 'showXml.html', 
     className: 'ngdialog-theme-default', 
     controller: ['$scope', function($scope) { 
       $scope.data = $scope.xmldata 
       // Controller logic here 
     }] 
     }); 
    }, function(error){} 
) 

Else здесь есть еще один демо от одного ответа от StackOverflow: Demo

Дайте мне знать.

+0

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

+0

На самом деле это всего лишь один из способов, вы можете передавать данные с контроллера для просмотра, я точно не знаю, как вы проходите или используете ngDialog i ваше приложение. Для получения дополнительной информации обратитесь к документам ngDialog. – Jigar7521

+0

@pranayanand Nah, вам фактически не нужно создавать внутренний контроллер. Какая хлопот! Ознакомьтесь с моим ответом для получения более подробной информации. – ccjmne