2017-12-09 2 views
0

Ich versuche Adressobjekt zu übergeben, das vom HTML-Element an eine Funktion im übergeordneten Controller übergeben wird (myAppController) zu einem Controller (dh DialogController) innerhalb des übergeordneten Controllers. Ich erstelle ein MD-Dialogfeld, wenn die Schaltfläche Bearbeiten angeklickt wird, sollten Elemente im Adressobjekt im MD-Dialogfeld angezeigt werden. Der md-Dialog funktioniert, kann aber die Einträge in der Adresse nicht anzeigen. Dies ist mein ControllerWie übergeben Sie ein Objekt, das vom HTML-Element an eine Funktion im übergeordneten Controller übergeben wird, an einen Controller im übergeordneten Controller

(function() { 
'use strict'; 
angular 
.module('myApp') 
.controller('myAppController', myAppController); 
myAppController.$inject = ['$scope', '$state','AddressesService']; 
function myAppController ($scope, $state, AddressesService) { 
var vm = this; 
vm.addresses = AddressesService.query(); 
// this is a long controller so i cut short it to important part 
$scope.showAdvanced = function(address, ev) { 
$mdDialog.show({ 
    controller: DialogController(address), 
    templateUrl: '/modules/carts/client/views/edit.tmpl.html', 
    parent: angular.element(document.body), 
    targetEvent: ev, 
    clickOutsideToClose:true, 
    fullscreen: $scope.customFullscreen // Only for -xs, -sm breakpoints. 
    }); 
function DialogController($scope, $mdDialog, address) { 
console.log("address"+" "+address); // says undefined 
    $scope.hide = function() { 
     $mdDialog.hide(); 
    }; 
$scope.cancel = function() { 
     $mdDialog.cancel(); 
    }; 
    $scope.answer = function(answer) { 
     $mdDialog.hide(answer); 
    }; 
    } 
}; 
} 
}());` 

und dies ist mein html ist

<div ng-repeat="address in vm.addresses"> 
<h5 class="list-group-item-heading uppercase bold" ng-bind="address.name"</h5> 
<button ng-click="showAdvanced(address, $event)">Edit</button> 
</div>` 

Antwort

0

Der richtige Weg, um Daten zu einem Dialog-Controller zu übergeben ist, den Parameter

'Einheimischen' zu verwenden

versuchen, diese:

Beachten Sie, dass der Name Ihres Controllers zwischen Anführungszeichen stehen sollte: ''

Verwandte Themen