Bindung des Ausdrucks "(" & ")", um Daten von der AngularJS-Komponente an den übergeordneten Bereich zu übergeben

Über die Bindungsfunktion für die Ausgabe von Winkelkomponenten kann nicht auf den Controller-Bereich zugegriffen werden

Ich versuche, über das Dashboard auf meinen Home-Controller-Bereich zuzugreifen.Komponent aber es ist undefiniert.

Ich habe auch einen zweiten Ansatz ausprobiert, aber dann ist meine Funktionsvariable undefiniert.

Ich verwende Angular 1.5 mit Typescript

ERSTE ANSATZ

Home Controller HTML:

<div class="home-container">
    <dashboard-component on-tile-type-changed="HomeCtrl.onTileTypeChanged">
    </dashboard-component>
</div>

Home Controller js:

namespace app.dashboard {
    'use strict';

    class HomeController {
        static $inject:Array<string> = ['$window'];

        constructor(private $window:ng.IWindowService) {

        }

        private onTileTypeChanged(tile:ITile) {
            console.log(tile); // DEFINED AND WORKING
            console.log(this); // NOT DEFINED
        }
    }

    angular
        .module('app.dashboard')
        .controller('HomeController', HomeController);
}

Dashboard Controller js:

angular.module('app.dashboard')
    .component('dashboardComponent', {
        templateUrl: 'app/dashboard/directives/dashboard-container.html',
        controller: DashboardComponent,
        controllerAs: 'DashboardCtrl',
        bindings: {
            onTileTypeChanged: "&"
        }
    });

this.onTileTypeChanged()(tile);

ZWEITER ANSATZ:

Home Controller HTML:

<div class="home-container">
    <dashboard-component on-tile-type-changed="HomeCtrl.onTileTypeChanged()">
    </dashboard-component>
</div>

Dashboard Controller js:

this.onTileTypeChanged(tile);

nd hier bekomme ich das Gegenteil:

private onTileTypeChanged(tile:ITile) {
    console.log(tile); // NOT DEFINED
    console.log(this); // DEFINED AND WORKING
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage