2016-09-27 2 views
0

Ich verwende Angular Materials $ mdToast-Dienst, aber ich habe einige Probleme beim Zugriff auf den übergeordneten Controller.

Ich habe einen Controller namens CalculationsListController

Innen hier habe ich meine $mdToast Instanz

$mdToast.show({ templateUrl: 'app/features/settlement/calculations/toast.html', position: 'top right', hideDelay: 0, parent: $document[0].querySelector('#toast-container'), controllerAs: 'vm', bindToController: true });

In der Vorlagen-Markup Ich habe die folgende

<md-toast class="error"> <span translate translate-values="{unAllocatedJourneys: vm.unAllocatedJourneys.summary.total}">TOAST_MESSAGE.CALCULATION_REQUEST.UNALLOCATED_JOURNEYS</span> <md-button ng-click="vm.test()"><span translate>TOAST_MESSAGE.CALCULATION_REQUEST.FIND_OUT_MORE</span></md-button> </md-toast>

Hinweis - My vm.test() & vm.unAllocatedJourneys sind oben als Eigenschaften in meinem Controller definiert bis

Aus dem Vorstehenden kann man sehen, warum ich keinen Zugriff auf meine vm Eigenschaften auf der übergeordneten Steuerung kann?

Antwort

1

Ich würde vorschlagen, den ‚Einheimischen‘ Feld auf dem Konfigurationsobjekt mit den Werten an den Toast-Controller für die Bindung

$mdToast.show({ 
    templateUrl: 'app/features/settlement/calculations/toast.html', 
    position: 'top right', 
    hideDelay: 0, 
    parent: $document[0].querySelector('#toast-container'), 
    controller: function() {}, 
    controllerAs: 'vm', 
    bindToController: true, 
    locals: { 
     unAllocatedJourneys: vm.unAllocatedJourneys 
    } 
}); 

oder mit dem Controller-Feld, um die bestehenden Controller

$mdToast.show({ 
    templateUrl: 'app/features/settlement/calculations/toast.html', 
    position: 'top right', 
    hideDelay: 0, 
    parent: $document[0].querySelector('#toast-container'), 
    controllerAs: 'vm', 
    bindToController: true, 
    controller: vm 
}); 

Toast Documentation verwenden

+0

Hallo Graham, ich habe eigentlich das Gleiche, aber die Einheimischen immer noch nicht funktionieren mit, wie es das gleiche wie das tut, was bindToController tut. Sie erwähnen, dass die Verwendung von bindToController unsere lokalen Variablen bindet, ohne sie übergeben zu müssen - "bindToController - bool: binde die Locals an den Controller, anstatt sie zu übergeben" – Jackthomson

+1

Ich habe eine leere Controller-Deklaration hinzugefügt - probiere das aus. Ich konnte eine Variable übergeben und las es mit vm.variableName in meinem Toast-Template –

+0

Vielen Dank Graham - Sie haben mich auf den richtigen Weg gebracht viel herumfummelnd mit diesem! Top-Typ, danke für deine Hilfe! – Jackthomson

0

sollten Sie Ihr Modal mit aktuellem Gültigkeitsbereich öffnen:

$mdDialog.show({ 
    scope: $scope 
}); 

wo Umfang $, den Umfang der

CalculationsListController ist