我正在使用Angular 1.5.8和Typescript进行开发。
我有一个指令,它在另一个指令(和另一个控制器)的范围内使用。假设有指令1、控制器1和指令2、控制器2。
鉴于控制器1已经具有用户信息,我希望通过Directive2将此用户信息传递给Controller2,以防止再次从后端获取信息。
我不确定是否可以这样做,但如果可以那就太好了 :)
以下是代码,用以说明我的问题:
Directive1 HTML:
以下是代码,用以说明我的问题:
Directive1 HTML:
<div>
...
<directive2 user="{{ctrl.loggedUser}}"></directive2>
...
</div>
在Controller1构造函数中,通过调用后端加载loggedUser。
Directive2和Directive2Ctrl TypeScript代码:
class Directive2 implements ng.IDirective {
controller = "Directive2Ctrl";
controllerAs = "d2Ctrl";
bindToController = {
user: "@"
};
restrict = "E";
templateUrl = "directive2.html";
static factory(): ng.IDirectiveFactory {
const directive = () => new Directive2();
return directive;
}
}
angular
.module("app")
.controller("Directive2Ctrl", Directive2Ctrl)
.directive("directive2", Directive2.factory());
class Directive2Ctrl implements IDirective2Ctrl {
public user: User;
constructor(user: User) {
// user is undefined
}
$onInit(user: User): void {
// user is undefined
}
}
我找不到将用户对象传递给Directive2Ctrl的方法(甚至不确定是否可能)。
user="ctrl.loggedUser"
(没有花括号),在 bindToController 定义中应该是user: "="
(而不是 @)。 - Aleksey L.