【发布时间】:2016-06-02 22:36:54
【问题描述】:
无法从角度组件输出绑定函数访问控制器范围
我正在尝试从仪表板 component 访问我的家庭控制器范围,但它未定义。
我也尝试了第二种方法,但我的函数变量未定义。
我正在使用带有 Typescript 的 Angular 1.5
第一种方法:
主页控制器 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);
第二种方法:
主页控制器 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
}
【问题讨论】:
-
dashboard-component的绑定是什么? -
试过使用controllerAs语法吗?
-
@georgeawg 添加,控制器中的函数已触发,但我无法同时访问控制器范围和输入变量。
-
我的意思是 homecontroller,你如何将 homecontroller 绑定到视图?你在用路由器吗?
-
@Yerken 是的,我正在使用带有 controllerAs 语法的路由器
标签: angularjs angularjs-components isolate-scope