无法从角度分量输出绑定功能访问控制器范围
我正在尝试从仪表板component访问我的家庭控制器范围,但它未定义 .
我也尝试了第二种方法但是我的函数变量未定义 .
我正在使用带有Typescript的Angular 1.5
FIRST APPROACH:
家庭控制器HTML:
<div class="home-container">
<dashboard-component on-tile-type-changed="HomeCtrl.onTileTypeChanged">
</dashboard-component>
</div>
家庭控制器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);
}
仪表板控制器js:
angular.module('app.dashboard')
.component('dashboardComponent', {
templateUrl: 'app/dashboard/directives/dashboard-container.html',
controller: DashboardComponent,
controllerAs: 'DashboardCtrl',
bindings: {
onTileTypeChanged: "&"
}
});
this.onTileTypeChanged()(tile);
SECOND APPROACH:
家庭控制器HTML:
<div class="home-container">
<dashboard-component on-tile-type-changed="HomeCtrl.onTileTypeChanged()">
</dashboard-component>
</div>
仪表板控制器js:
this.onTileTypeChanged(tile);
在这里,我正好相反:
private onTileTypeChanged(tile:ITile) {
console.log(tile); // NOT DEFINED
console.log(this); // DEFINED AND WORKING
}
1 回答
tl;博士;看下面的演示
您正在使用表达式绑定 .
要将事件数据从组件传递到父控制器:
实例化
dashboard-component
:在组件控制器中使用locals调用该函数:
注入本地的约定是使用
$
前缀命名它们,以区别于父作用域上的变量 .来自Docs:
使用表达式(“&”)绑定传递数据的演示