2016-11-21 77 views
3

我正努力在我的模態中顯示'嵌套'[數組]數據。我可以在我的視圖頁面上以角度查看從網址中獲取的所有數據。但是,當我點擊相同的元素彈出模式以查看模式中的相同信息時,我看不到一些信息。在這種情況下,我不能僱員或開發人員。在角Angularjs:如何將特定數據傳遞給模態

**controller used is 'HomeController' 
**/comments is where my json data is located with 'employees' 
being a one-to-many relationship entity in my backend (which might be the issue in my head) 

var vm = this; 
vm.projects = []; 
$http.get('/comments') 
    .then(function(result) { 
     console.log(result); 
     vm.projects = result.data; 
    }); 

data在我的模式模板中使用

URL抓取代碼(不工作模態代碼)

<div ng-repeat="data in controller.projects"> 
     <ul ng-repeat="employee in data.employees"> 
      {{employee.name}} 
     </ul> 
    </div> 

controller來自<div ng-controller="HomeController as controller">

我也試過這個;

<div ng-repeat="employee in Project.Employees" class="selected-item"> 
     {{employee.name}} 
    </div> 

但不起作用!

如下所示,employees顯示在「正常」頁面上。

enter image description here

然而,當我ng-click="editProject(data)"上述卡彈出模式,一切如上圖所示(下面這裏沒有顯示),除了員工彈出。這可能是一個路由問題?

enter image description here

基本上,直到我蹦出來的模態一切都運行完美的模板視圖。這是「模式彈出」代碼;

$scope.editProject = function(data) { 
    $scope.showSelected = true; 
    $scope.SelectedProject = data; 
    var fromDate = moment(data.start).format('DD/MM/YYYY LT'); 
    var endDate = moment(data.end).format('DD/MM/YYYY LT'); 

    $scope.Project = { 
     ProjectID : data.projectID, 
     Client : data.client, 
     Title : data.title, 
     Description: data.description, 
     Employees: data.employees, 
     StartAt : fromDate, 
     EndAt : endDate, 
     IsFullDay : false 
    } 

    $scope.ShowModal() 
}, 

//This function is for show modal dialog 
$scope.ShowModal = function(){ 
    $scope.option = { 
     templateUrl: 'modalContent.html', 
     controller: 'modalController', 
     backdrop: 'static', 
     resolve: { 
      Project : function() { 
       return $scope.Project; 
      }, 
      SelectedProject : $scope.SelectedProject     
     } 
    }; 

莫不是我缺少的ShowModalresolve一個承諾?

同時在chrome devtools中,employees似乎已被「拾取」,如下所示;

enter image description here

然而,當我打開對象,有趣的是,它說數組爲空;

enter image description here

我一般是新的角度和web開發。如果您需要我透露我的後端或任何其他您認爲不存在的代碼,請告訴我。我只是認爲這是一個尖銳的問題。謝謝你的幫助。

+0

它並不是說該數組是空的。你能擴展Employees節點嗎? – Deep

+0

您使用的是angularUI bootstrap嗎? https://angular-ui.github.io/bootstrap/爲你的模式?或者是其他東西? – haxxxton

+0

@Deep擴展如上更新。 –

回答

2

你需要傳遞項目依賴注入到你的模態例如控制器:

angular.module('ui.bootstrap.demo').controller('ModalInstanceCtrl', function ($uibModalInstance, projects) { 
    var $ctrl = this; 
    $ctrl.projects = projects; 

    $ctrl.ok = function() { 
    $uibModalInstance.close(); 
    }; 

    $ctrl.cancel = function() { 
    $uibModalInstance.dismiss(); 
    }; 
}); 

,並在您開啓功能解決這個問題:

angular.module('ui.bootstrap.demo').controller('ModalDemoCtrl', function ($http, $uibModal, $log, $document) { 
    var $ctrl = this; 

    $http.get('data.json').then(function(result) { 
    console.log(result); 
    $ctrl.projects = result.data; 
    }); 

    $ctrl.open = function (size, parentSelector) { 
    var parentElem = parentSelector ? 
     angular.element($document[0].querySelector('.modal-demo ' + parentSelector)) : undefined; 
    var modalInstance = $uibModal.open({ 
     ariaLabelledBy: 'modal-title', 
     ariaDescribedBy: 'modal-body', 
     templateUrl: 'myModalContent.html', 
     controller: 'ModalInstanceCtrl', 
     controllerAs: '$ctrl', 
     size: size, 
     appendTo: parentElem, 
     resolve: { 
     projects: function() { 
      return $ctrl.projects; 
     } 
     } 
    }); 
    }; 
}); 

請注意也是控制器名稱傳遞與controllerAs財產,而不是在HTML模板。

plunker:https://plnkr.co/edit/wLI0pa07UNhr9Ld8CSg3?p=preview

+0

謝謝!這工作! –

+1

我其實在這一半完成,但你交付.. :) – Aravind

+0

@Aravind一件事。如果我只想在'data.json'中只顯示一個'employees',會怎樣?如果您在您的應用中使用了此解決方案,則爲 –